home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekikoh Dennoh Club 1
/
Gekikoh Dennoh Club Vol. 1 (Japan).7z
/
Gekikoh Dennoh Club Vol. 1 (Japan) (Track 1).bin
/
tools
/
cdc
/
src
/
cdc.s
< prev
next >
Wrap
Text File
|
1997-05-28
|
108KB
|
5,241 lines
.include tnb.mac
.include iocscall.mac
.include doscall.mac
_GETFCB equ $ff7c
HEAD1 = 'CDCT'
HEAD2 = '110H'
SCSI__ .macro callname
move.w #-1,SCF
*move.w $0a0e.w,-(sp) *現在処理中のIOCSコール番号(なければ-1)
moveq #callname,d1
moveq #_SCSIDRV,d0
trap #15
*move.w (sp)+,$0a0e.w *現在処理中のIOCSコール番号(なければ-1)
.endm
DOS__ macro callname
move.w #1,SCF
.dc.w callname
clr.w SCF
endm
FadeOutSpeed equ 8*5 *1秒に下がるボリューム
SCSI_USECHK_MODE1 equ 1 *使用しないなら __ を付ける
__TARGET_USECHK_MODE1 equ 1 *使用しないなら __ を付ける
TnLC_=8000 *今のカウント
DefTrkMax = 200
TrkMax = 1024
PrgMax = 256
StartStatio:*******************常駐部
SS:
jbra init
head:
.dc.l HEAD1
.dc.l HEAD2
.even
.dc.l 'CDC_trap'
st:
TRP5:*=========================================
* ($25)[$0094]
* TRAP 5
*
TRP5_ = $0094.w
jbra tr5s
tr5tabs:
.dc.l tr5_00,tr5_01,tr5_02,tr5_03,tr5_04,tr5_05,tr5_06,tr5_07
.dc.l tr5_08,tr5_09,tr5_0a,tr5_0b,tr5_0c,tr5_0d,tr5_0e,tr5_0f
.dc.l tr5_10,tr5_11,tr5_12,tr5_13,tr5_14,tr5_15,tr5_16,tr5_17
.dc.l tr5_18,tr5_19,tr5_1a,tr5_1b,tr5_1c,tr5_1d,tr5_1e,tr5_1f
.dc.l tr5_20,tr5_21,tr5_22,tr5_23,tr5_24,tr5_25,tr5_26,tr5_27
.dc.l tr5_28,tr5_29,tr5_2a,tr5_2b,tr5_2c,tr5_2d,tr5_2e,tr5_2f
.dc.l tr5_30,tr5_31,tr5_32,tr5_33,tr5_34,tr5_35,tr5_36,tr5_37
.dc.l tr5_38,tr5_39,tr5_3a,tr5_3b,tr5_3c,tr5_3d,tr5_3e,tr5_3f
TRP5_JPT:
.dc.l $00000000.l
_FgetsInit:
*==========================================
* 備考)アドレッシングの関係で頭に置きます
*------------------------------------------
*一度に読むバイト数
TREADMJ equ 2048
*残り最低必要バイト数 2336 byte 以下であること!
TREADJ equ 128
move.l #TREADMJ,FgetsPT
rts
_Fgets: *------------------------------------------
* ファイルから1行をバッファに読み込み
* Fgets(f)
movea.l 4(sp),a2 *ファイルポインタ
move.w a2,FgetsFP
*--------------残り文字数はいくつ?
move.l FgetsPT(pc),d1
cmp.l #TREADMJ-TREADJ,d1
bcc @f
*--------------十分ある
lea FgetsPTR(pc),a1
adda.l d1,a1
bra 2f
@@: *--------------バッファ内のデータ移動
cmpi.l #TREADMJ,d1
beq 1f
lea FgetsPTR(pc),a1
adda.l d1,a1
lea FgetsPTR(pc),a0
move.l #TREADMJ,d1
sub.l FgetsPT(pc),d1
subq.w #1,d1
@@: move.b (a1)+,(a0)+
dbra d1,@b
1: *--------------[TREADMJ]コ読む
lea FgetsPTR(pc),a1
move.l #TREADMJ,d1
sub.l FgetsPT(pc),d1
adda.l d1,a1 *足りない頭のadds
move.l FgetsPT(pc),-(sp) *足りない分読む
move.l a1,-(sp)
move.w FgetsFP(pc),-(sp)
DOS__ _READ
lea 10(sp),sp
tst.l d0
jbpl @f
moveq #-1,d0 *エラー
rts
@@:
lea FgetsPTR(pc),a1
moveq #0,d1 *d1=文字バイト数
2:
movea.l a1,a2
move.b (a1),d0
bne @f
moveq #0,d0 *0;終了
rts
@@:
_fgL2: move.b (a1)+,d0
jbeq _fgL3
cmpi.b #$0d,d0 *改行だから終わり
jbeq _fgL1_
cmpi.b #$0a,d0 *改行だから終わり
jbeq _fgL1
cmpi.b #$80,d0 *全角
jbcs @f
cmpi.b #$9F+1,d0
jbcs _fgL4
@@: cmpi.b #$E0,d0
jbcc _fgL4
addq.l #1,d1
cmpi.l #TREADMJ,d1
jbcc _fgL3
jbra _fgL2
_fgL4:
move.b (a1)+,d0
addq.l #2,d1
cmpi.l #TREADMJ,d1
jbcc _fgL3
jbra _fgL2
_fgL3:
clr.b (a1)
move.l d1,FgetsPT
move.l a2,d0
rts
_fgL1_:
addq.l #1,d1
_fgL1:
addq.l #1,d1
move.b #0,-1(a1)
move.l d1,FgetsPT
move.l a2,d0
rts
_buf2k: * SCSI-COM 用バッファ 兼
FgetsPTR: * 読み込み用バッファ
.ds.b 2000
_buf32: .ds.b 336 *たして 2336byte いる
.dc.b 0,0
.even
FgetsFP:
.dc.w 0
FgetsPT:
.dc.l TREADMJ *現在の有効文字開始バイト数
_FseekTop:
*------------------------------------------
* ファイルを頭に
move.l 4(sp),d1 *ファイルポインタ
move.w #0,-(sp)
move.l #0,-(sp)
move.w d1,-(sp)
DOS__ _SEEK
addq.l #8,sp
rts
SCALL:*=========================================
* ($1F5)[$07D4]
* SCSI-CALL
*
SCALL_ = $07D4.w
* tst.b ScIocsSwc
* beq @f
* moveq #2,d0 *戻り値にエラーを付ける
* rts
*@@:
tst.w _ScscChksw *1;STSIN MSGIN の実行待ち
beq @f
jbsr _scsi_cmd_chk_s
@@:
move.b #1,ScIocsSwc
tst.w _CdcMode *1:運転中 0:停止中
jbeq SCALL_EE
*======CDCで呼んだかチェック?
tst.w SCF *CDCで呼んだ?
beq @f
bpl SCALL_EE
clr.w SCF
bra SCALL_EE
@@:
*======コマンドチェック
cmpi.l #_S_RESET,d1 *RESETなら
beq SCALL_JP
cmpi.l #_S_CMDOUT,d1 *CMDOUT未満なら
bcs @f
cmpi.l #_S_INQUIRY,d1 *INQUIRY未満なら
bcs SCALL_EE
beq SCALL_EE *INQUIRYなら
@@:
*======IDチェック
*cmp.l _SCSI_IDF(pc),d4 *SCSI ID,LUNは?
cmp.w _SCSI_ID+2(pc),d4 *SCSI IDは?
bne SCALL_EE
*======テストユニット エミュ?
cmpi.l #_S_TESTUNIT,d1 *_S_TESTUNITなら
bne 1f
tst.w _TestunitSw *-1;AUDIOONLYなら未挿入 1;演奏中未挿入 0;そのまま
beq 1f
bpl @f
*======-1;AUDIOONLYなら未挿入
tst.w _CDIN *0:CDは入っていない 1:入っている
beq @f
tst.w _DtTrak *1;データトラック有り,-1;データのみ
bne @f
*bsr _EJE_EMU2
moveq #1,d0 *戻り値にエラーを付ける
clr.b ScIocsSwc
rts
@@: *======1;演奏中未挿入
tst.w _TrkNo
beq 1f
bsr _EJE_EMU2
moveq #1,d0 *戻り値にエラーを付ける
clr.b ScIocsSwc
rts
1: tst.w _REQU_PTR *エラーはある?
beq SCALL_EE
*======REQUESTならエラー エミュ?
cmpi.l #_S_REQUEST,d1 *_S_REQUESTなら
bne SCALL_L1
movem.l a0/a1,-(sp)
move.l d3,d0 *万が一d3が0なら終わる
beq 1f
subq.l #1,d0
lea _REQU_PTR,a0
@@: move.b (a0)+,(a1)+
dbra d0,@b
1:
clr.w _REQU_PTR
movem.l (sp)+,a0/a1
move.l _REQU_D0,d0 *エラーエミュで終了
clr.b ScIocsSwc
rts
SCALL_L1:*=====エラーエミュスタンバイされている?
cmpi.l #$20,d1 *戻り値がメッセージフェイズのコール?
bcs SCALL_EE
tst.w _REQU_CHK
beq SCALL_EE
clr.w _REQU_CHK
moveq #2,d0 *戻り値にエラーで終わり
clr.b ScIocsSwc
rts
SCALL_EE:*=====SCSIバスチェック
.ifdef SCSI_USECHK_MODE1
cmpi.l #_S_SELECT,d1 * SELECT ?
beq @f
cmpi.l #_S_SELECTA,d1
bne 1f
@@: *====== セレクションなら
bsr SCALL_JP
tst.l d0 *繋がった?
bne @f
move.w #1,SUC * 1;ならSCSIバスは使用中
@@: clr.b ScIocsSwc
rts
1:
cmpi.l #_S_CMDOUT,d1 * CMDOUT ?
bne 1f
*======コマンドアウトなら
bsr SCALL_JP
tst.l d0 * OK ?
beq @f
clr.w SUC * 1;ならSCSIバスは使用中
@@: clr.b ScIocsSwc
rts
1:
cmpi.l #_S_MSGIN,d1 * MSGIN ?
bne @f
*======メッセージインなら
clr.w SUC * 1;ならSCSIバスは使用中
bra SCALL_JP
@@:
.endif
SCALL_JP:
bsr SCALL_JMP
clr.b ScIocsSwc
rts
SCALL_JMP:
*moveq #_SCSIDRV,d0
move.l SCALL_JPT(pc),-(sp)
rts
SCALL_JPT:
.dc.l 0
SCF: .dc.w 0
SUC: .dc.w 0 * 1;ならSCSIバスは使用中
PWSW:*=========================================
* ($42)[$0108]
* フロントスイッチ
*
PWSW_ = $0108.w
movem.l d0-d7/a0-a6,-(sp)
jbsr _CDCOFF
*jbsr ScsiUseChk *ver 1.09Aまでの処理
*jbne PWSW_JMP
*jbsr _ZeroUnit
moveq #_SCSIDRV,d0
moveq #_S_RESET,d1
jsr SCALL_JMP
movem.l (sp)+,d0-d7/a0-a6
PWSW_JMP:
move.l PWSW_JPT(pc),-(sp)
rts
PWSW_JPT:
.dc.l 0
MFP:*=========================================
* ($4C)[$0130]
* MFP キーシリアル
*
MFP_ = $0130.w
tst.w _KeySwi
jbeq MFP_JMP
move.l d7,-(sp)
move.b $00E8802F,d7
btst #7,d7
jbeq @f *押された
clr.w _KeyPush
jbra MP_L1
@@:
bclr.b #4,IMRA *キー入力割り込みマスククリア
move.w #1,_KeyPush
jbsr CmdCord
jbeq MP_L1_ *CDC用キーでない
movem.l d0-d1,-(sp)
move.b $800+$0E,d0
swap d0
move.w $800+$0A,d0
andi.l #$000FE003,d0
cmp.l _SFTK(pc),d0
bne MP_L2
tst.w MFP_cmd
beq MP_L4
tst.w MFP_cmd+2
beq @f
move.w MFP_cmd+2(pc),MFP_cmd
@@: move.w d7,MFP_cmd+2
bra MP_L3
MP_L4: move.w d7,MFP_cmd
MP_L3: movem.l (sp)+,d0-d1
bset.b #4,IMRA *キー入力割り込みマスクセット
move.l (sp)+,d7
rte
MP_L2:
movem.l (sp)+,d0-d1
MP_L1_:
bset.b #4,IMRA *キー入力割り込みマスクセット
MP_L1:
move.l (sp)+,d7
MFP_JMP:
move.l MFP_JPT(pc),-(sp)
rts
MFP_JPT:
.dc.l 0
MFP_JPT_:
.dc.l 0
MFP_BAK:
.dc.l 0
MFP_cmd:
.dc.w 0 *コマンドキーバッファ
.dc.w 0 *コマンドキーバッファ
INTVCS: *-----------------------------
* [$FF25]
* 設定&アドレス返し
INTVCS_ = $FF25
cmpi.w #$004C,(a6) *キー入力か?
jbne INTVCS_JMP
move.l MFP_JPT(pc),-(sp)
move.l 2(a6),d0
move.l d0,MFP_JPT
move.l (sp)+,d0
rts
INTVCS_JMP:
move.l INTVCS_JPT(pc),-(sp)
rts
INTVCS_JPT:
.dc.l 0
INTVCG: *-----------------------------
* [$FF35]
* アドレス返し
INTVCG_ = $FF35
cmpi.w #$004C,(a6) *キー入力か?
jbne @f
move.l MFP_JPT(pc),d0
rts
@@:
INTVCG_JMP:
move.l INTVCG_JPT(pc),-(sp)
rts
INTVCG_JPT:
.dc.l 0
BITSNS:*=========================================
* ($104)[$0410]
* IOCS $04 BITSNS
* ちょっと重いかも知れない
* どこかがフックされたら働く、
* と言う方がいいかも知れない
*
BITSNS_ = $0410
tst.l IocsSwc
jbne BITSNS_JMP
tst.w _ScscChksw *1;STSIN MSGIN の実行待ち
beq 1f
movem.l d0-d1,-(sp)
jbsr PHASE_DISP
andi.b #$07,d0
cmpi.b #$03,d0
bne @f
bsr _scsi_cmd_chk
@@: movem.l (sp)+,d0-d1
1:
tst.w SUC * 1;ならSCSIバスは使用中
jbne BITSNS_JMP
tst.w MFP_cmd
jbne @f
jbsr NokeySeek
jbra BS_EE
@@:
move.b #1,IocsSwc
movem.l d0-d7/a0-a6,-(sp)
move.w MFP_cmd(pc),d0
move.w MFP_cmd+2(pc),MFP_cmd
clr.w MFP_cmd+2
jbsr KeySns
movem.l (sp)+,d0-d7/a0-a6
BS_EE:
jbsr LoopChk
clr.b IocsSwc
BITSNS_JMP:
move.l BITSNS_JPT(pc),-(sp)
rts
BITSNS_JPT:
.dc.l 0
B_KEYSNS:*=========================================
* ($101)[$0404]
* IOCS $01 B_KEYSNS
*
B_KEYSNS_ = $0404
jbsr B_KEYSNS_JMP
tst.l IocsSwc
jbeq @f
rts
@@:
tst.w _ScscChksw *1;STSIN MSGIN の実行待ち
beq 1f
movem.l d0-d1,-(sp)
jbsr PHASE_DISP
andi.b #$07,d0
cmpi.b #$03,d0
bne @f
bsr _scsi_cmd_chk
@@: movem.l (sp)+,d0-d1
1:
tst.w SUC * 1;ならSCSIバスは使用中
jbeq @f
rts
@@: tst.w MFP_cmd
jbne @f
jbsr NokeySeek
jbra BKS_L3
@@:
movem.l d0-d7/a0-a6,-(sp)
move.w MFP_cmd(pc),d0
move.w MFP_cmd+2(pc),MFP_cmd
clr.w MFP_cmd+2
jbsr KeySns
movem.l (sp)+,d0-d7/a0-a6
BKS_L3:
tst.w _KeySwi
jbeq BKS_L2
tst.l d0
jbne @f
jbsr NokeySeek
jbra BKS_L2 *0なら終わり
@@:
movem.l d0-d7/a0-a6,-(sp)
move.l d0,d7
lsr.w #8,d7
jbsr CmdCord
jbeq BKS_L1 *CDC用キーでない
move.l d0,d7
move.b $800+$0E,d0
swap d0
move.w $800+$0A,d0
andi.l #$000FE003,d0
cmp.l _SFTK(pc),d0
bne BKS_L1
move.l d7,d0
lsr.w #8,d0
jbsr KeySns **
jbne BKS_L1
*あった (=キーバッファに入れない)
jbsr B_KEYSNS_JMP *念のため呼ぶ(file関係の時にキーバッファーが使われる?)
tst.l d0
jbeq BKS_L4
IOCS _B_KEYINP
BKS_L4: movem.l (sp)+,d0-d7/a0-a6
moveq #0,d0
rts
BKS_L1:
movem.l (sp)+,d0-d7/a0-a6
BKS_L2:
jbsr LoopChk
rts
B_KEYSNS_JMP:
move.l B_KEYSNS_JPT(pc),-(sp)
rts
B_KEYSNS_JPT:
.dc.l 0
_Rand: *------------------------------------------
move.l _RKB(pc),d0
mulu #5,d0
addq.l #1,d0
andi.l #$0FFF,d0
move.l d0,_RKB
rts
_Randomize:*---------------------------------------
move.l 4(sp),_RKB * 基板に記憶
rts
_RKB:
.dc.l 0
*------------------------------------------
KeySnsEM:
.dc.w 0 *0:KEY 1:TRAP
KeySns:*=========================================
*
* d0=キーボードコード
*
*[戻り値] beq : 何かあった (=キーパッファに入れない)
* bne : 何もなし
*
move.b d0,d7
andi.l #$007F,d7
jbeq EE
lea KST(pc),a0
add.w d7,d7
adda.w (a0,d7.w),a0
jmp (a0)
EE: moveq #1,d0
rts
Kt: .macro A,B,C,D
.dc.w A-KST,B-KST,C-KST,D-KST
.endm
KST:
Kt EE,Tesc,EE,EE *│未定義│ ESC │ 1! │ 2"
Kt EE,EE,EE,EE *│ 3# │ 4$ │ 5% │ 6&
Kt Tsuz7,Tsuz8,Tsuz9,Trnd *│ 7' │ 8( │ 9) │ 0
Kt Tauto,EE,EE,Tbs *│ -= │ ^~ │ \| │ BS
Kt Ttab,EE,TledU,Te *│ TAB │ Q │ W │ E
Kt Tr,EE,EE,Tsuz4 *│ R │ T │ Y │ U
Kt Tsuz5,Tsuz6,TsuzM,EE *│ I │ O │ P │ @`
Kt Trvtm,Tenter,TledL,TledR *│ [ │ [CR] │ A │ S
Kt EE,EE,EE,EE *│ D │ F │ G │ H
Kt Tsuz1,Tsuz2,Tsuz3,TsuzP *│ J │ K │ L │ ;+
Kt EE,Ttm,TledD,EE *│ :* │ ] │ Z │ X
Kt EE,EE,EE,EE *│ C │ V │ B │ N
Kt Tsuz0,Tmemview,Tmem,Tequ *│ M │ ,< │ .> │ /?
Kt Tenter,EE,Thome,Tdel *│ _ │ [SP] │ HOME │ DEL
Kt Trew,Tff,Tundo,Trew_ *│Rollup│Rolldn│ UNDO │ ←
Kt Tvolup,Tff_,Tvoldn,Tclr *│ ↑ │ → │ ↓ │ CLR
Kt Trnd,Tauto,TsuzM,Tsuz7 *│ / │ * │ - │ 7
Kt Tsuz8,Tsuz9,TsuzP,Tsuz4 *│ 8 │ 9 │ + │ 4
Kt Tsuz5,Tsuz6,Tequ,Tsuz1 *│ 5 │ 6 │ = │ 1
Kt Tsuz2,Tsuz3,Tenter,Tsuz0 *│ 2 │ 3 │ ENTER│ 0
Kt Tmemview,Tmem,Tkigou,Ttouroku *│ , │ . │ 記号 │ 登録
Kt EE,EE,EE,EE *│ HELP │ XF1 │ XF2 │ XF3
Kt EE,EE,EE,EE *│ XF4 │ XF5 │ かな │ ローマ字
Kt EE,EE,EE,EE *│コード│ CAPS │ INS │ ヒカナ
Kt EE,EE,EE,TF1 *│ 全角 │ BREAK│ COPY │ F1
Kt TF2,TF3,TF4,TF5 *│ F2 │ F3 │ F4 │ F5
Kt TF6,TF7,TF8,TF9 *│ F6 │ F7 │ F8 │ F9
Kt TF10,EE,EE,EE *│ F10 │未定義│未定義│未定義
Kt EE,EE,EE,EE *│ SHIFT│ CTRL │ OPT.1│ OPT.2
Kt EE,EE,EE,EE *│未定義│未定義│未定義│未定義
Kt EE,EE,EE,EE *│未定義│未定義│未定義│未定義
Kt EE,Tbankid,Tstmo,Tfadeo *│未定義│未定義│未定義│未定義
CmdCord:***********************
*
*in d7=キーデータ
*out d7=キーデータ 0ならCDC用でない
* beq ならCDC用でない
*
movem.l d0/a0,-(sp)
moveq #0,d0
move.b d7,d0
lea KeyC_List,a0
move.b 0(a0,d0.w),d0
move.l d0,d7
lsr.w #3,d0 * /8
lea CmdC_List,a0
btst.b d7,(a0,d0.w)
jbne CmdC_L1
movem.l (sp)+,d0/a0
moveq #0,d7
rts
CmdC_L1:
movem.l (sp)+,d0/a0
andi.l #$00FF,d7
rts
defccl: .macro
.dc.b %0000_0010 **│ 6& │ 5% │ 4$ │ 3# │ 2" │ 1! │ ESC │未定義
.dc.b %1000_0000 **│ BS │ \| │ ^~ │ -= │ 0 │ 9) │ 8( │ 7'
.dc.b %0001_1101 **│ U │ Y │ T │ R │ E │ W │ Q │ TAB
.dc.b %1101_0000 **│ S │ A │ [CR] │ [ │ @` │ P │ O │ I
.dc.b %0000_0000 **│ ;+ │ L │ K │ J │ H │ G │ F │ D
.dc.b %0000_0110 **│ N │ B │ V │ C │ X │ Z │ ] │ :*
.dc.b %1100_0000 **│ DEL │ HOME │ [SP] │ _ │ /? │ .> │ ,< │ M
.dc.b %1010_1111 **│ CLR │ ↓ │ → │ ↑ │ ← │ UNDO │Rolldn│Rollup
.dc.b %1111_1111 **│ 4 │ + │ 9 │ 8 │ 7 │ - │ * │ /
.dc.b %1111_1111 **│ 0 │ ENTER│ 3 │ 2 │ 1 │ = │ 6 │ 5
.dc.b %0000_1011 **│ XF3 │ XF2 │ XF1 │ HELP │ 登録 │ 記号 │ . │ ,
.dc.b %0000_0000 **│ ヒカナ │ INS │ CAPS │コード│ ローマ字│ かな │ XF5 │ XF4
.dc.b %0000_0000 **│ F5 │ F4 │ F3 │ F2 │ F1 │ COPY │ BREAK│ 全角
.dc.b %0000_0000 **│未定義│未定義│未定義│ F10 │ F9 │ F8 │ F7 │ F6
.dc.b %0000_0000 **│未定義│未定義│未定義│未定義│ OPT.2│ OPT.1│ CTRL │ SHIFT
.dc.b %1110_0000 **│未定義│未定義│未定義│未定義│未定義│未定義│未定義│未定義
.endm
******************* SEEKチェック
NokeySeek:
tst.l _SeekNow
jbpl @f
rts
@@: tst.w _KeyPush
jbeq @f
rts
@@: move.w d0,-(sp)
move.b $800+8,d0
andi.b #$44,d0
movem.w (sp)+,d0 *フラグ破壊しないように・・・
jbeq @f
rts
@@:
NokeySeek2: *trap#5用name
move.l d0,-(sp)
move.w KeySnsEM,d0 *0;KEY 1;Trap で使用
cmp.w _SeekNowMd,d0
jbne MNkS_L1
movem.l d1-d7/a0-a6,-(sp)
*move.b #1,IocsSwc
moveq #0,d0
move.w _SeekNowTk,d0
tst.w _RndMode
jbne @f
tst.w _ReptMode
jbne @f
tst.w _MemLong
jbne @f
moveq #-1,d0
@@:
move.l d0,-(sp)
move.w _SeekNowTk,d0
add.w d0,d0
add.w d0,d0
movea.l _pListStTm,a0
move.l (a0,d0.w),-(sp)
move.l _SeekNow,-(sp)
jbsr _addtime
addq.l #8,sp
move.l d0,-(sp)
jbsr _CdPlay_hf
addq.l #8,sp
move.l #-1,_SeekNow
clr.w _PauseMode *0:特に 1:ポーズ中
jbsr _MemChkT
jbsr _B_KLE_D
*clr.b IocsSwc
movem.l (sp)+,d1-d7/a0-a6
clr.w _TsekSw *連続シーク値
MNkS_L1:
move.l (sp)+,d0
rts
_CdcModeOn:: *1:運転中
tst.w _CdcMode *1:運転中
jbeq @f
rts
@@: move.w #-1,_CdcMode *1:運転中
tst.w _JukeBox *0:ノーマル 1:JukeBox
beq @f
move.w #1,_CDIN
@@: rts
******************移動関係
TledL:
jbsr _CdcModeOn
move.l #-1,TledMS
move.l _DRAWADDS,d0
andi.w #$7F,d0
jbne @f
moveq #0,d0
rts
@@:
TledMove:
jbsr FnkBerChk
jbeq @f
jbsr KillLeds
move.l TledMS,d0
add.l d0,_DRAWADDS
jbsr DrawLeds
@@: moveq #0,d0
rts
TledMS:
.dc.l 0
TledR:
jbsr _CdcModeOn
move.l #1,TledMS
move.l _DRAWADDS,d0
andi.w #$7F,d0
*cmpi.w #128-(36+1+10),d0
cmpi.w #128-(10),d0
jbcs TledMove
moveq #0,d0
rts
TledU:
jbsr _CdcModeOn
move.l #-$800,TledMS
move.l _DRAWADDS,d0
andi.l #$1F800,d0
jbne TledMove
moveq #0,d0
rts
TledD:
jbsr _CdcModeOn
move.l #$800,TledMS
move.l _DRAWADDS,d0
andi.l #$1F800,d0
cmpi.l #$800*62,d0
jbcs TledMove
moveq #0,d0
rts
Tvolup:**********[↑]
jbsr _CdcModeOn
*jbsr _NowVol
moveq #0,d0
move.w _Volum,d0
cmpi.l #255,d0
beq 1f
addq.l #5,d0
cmpi.l #255+1,d0
bcs @f
move.l #255,d0
@@: move.l d0,-(sp)
jbsr _ChnVol
addq.l #4,sp
clr.w _Fadeouting * 0:ノーマル 1:フェードアウト中
1:
jbsr _WaitCC2 *今の1/100s
jbra _B_KLE_V
Tvoldn:**********[↓]
jbsr _CdcModeOn
*jbsr _NowVol
moveq #0,d0
move.w _Volum,d0
cmpi.l #1,d0
beq 1f
subq.l #5,d0
cmpi.l #2,d0
bcc @f
moveq #1,d0
@@: move.l d0,-(sp)
jbsr _ChnVol
addq.l #4,sp
clr.w _Fadeouting * 0:ノーマル 1:フェードアウト中
1:
jbsr _WaitCC2 *今の1/100s
jbra _B_KLE_V
Tfadeo:**********[未定義] フェードアウトボタン
jbsr _CdcModeOn
tst.w _MastVol
beq @f * ボリュームなしなら
*======フェードアウト開始
tst.w _Fadeouting
bne @f **既にfadeoutしている
**fadeout開始
move.w _Volum,_FadeoutVol * フェードアウト中のボリューム
move.w #1,_Fadeouting
@@: moveq #0,d0
rts
Tstmo:**********[未定義] ステレオ <-> モノラル ボタン
jbsr _CdcModeOn
jbsr _ChnStMono
moveq #0,d0
rts
Ttab:**********[TAB]
jbsr _CdcModeOn
not.w _DisForce
moveq #0,d0
rts
Ttouroku:**********[登録]
jbsr _CdcModeOn
jbsr _ChkCdRom
jbsr _B_KLE_LD
jbsr _CdListRead
jbsr _MemChkT
jbsr _WaitCC *今の1/100s
addi.w #300,_KeyTD *すぐに実行されるように
jbra _B_KLE_D
Tenter:******[ENTER]
jbsr _CdcModeOn
jbsr _ChkCdRom
clr.w _PauseMode *0:特に 1:ポーズ中
clr.w _ReptMode *0:ノーマル 1:リピート
clr.w _BgmMode *0:ノーマル 1:BGM
tst.w _CDIN *CD は入ってル?
bne @f
jbsr _CdReload *一応トレイを閉じてみる
jbsr _ChkCdRom *一応チェックをする
tst.w _CDIN *CD は入ってル?
beq _B_KLE_D *ないなら終わり
@@:
jbsr Tent_sub
jbra _B_KLE_D
Tent_sub:
tst.w _CDIN
jbne @f
rts
@@: move.w _MemLong,d0
jbeq Tes_J1
*めもりー
move.w #-1,_MemMode
clr.w _MemPt
jbsr _DisSuuziCalc
move.l d0,d7
jbeq Tes_J2
move.l _CdTrak,d0
cmp.l d0,d7
jbhi Tes_J2 *d1<=d0max
move.l d7,-(sp)
move.l d7,-(sp)
jbsr _CdPlay_hf
addq.l #8,sp
*move.l d0,-(sp)
jbsr _MemChkT
*move.l (sp)+,d0
rts
Tes_J2:
moveq #0,d0
move.b _MemSock,d0 *メモリの1つめを再生
move.l d0,-(sp)
move.l d0,-(sp)
jbsr _CdPlay_hf
addq.l #8,sp
rts
Tes_J1:
jbsr _DisSuuziCalc
move.l d0,d7
jbeq Tes_L1
move.l _CdTrak,d0
@@: cmp.l d0,d7
jbhi Tes_L1 *d1<=d0max
@@: move.l #-1,-(sp)
move.l d7,-(sp)
jbsr _CdPlay_hf
addq.l #8,sp
rts
Tes_L1: *jbsr _CdPlay_all
move.l #-1,-(sp)
move.l #1,-(sp)
jbsr _CdPlay_hf
addq.l #8,sp
rts
Tequ:******* [=]
* ストップ
jbsr _CdcModeOn
jbsr _ChkCdRom
tst.w _TrkNo
jbne @f
jbra _B_KLE_D
@@:
tst.w _CDIN
jbeq _B_KLE_D *err end
move.l _plyinf,d0
cmpi.b #$11,d0
jbne Tcont
*stop
jbsr _StpDsk
move.w #-1,_PauseMode *0:特に 1:ポーズ中
jbra _B_KLE_D
Tcont: *cont
jbsr _Resume
clr.w _PauseMode *0:特に 1:ポーズ中
jbra _B_KLE_D
Tclr:********* [CLR]
jbsr _CdcModeOn
jbsr _ChkCdRom
jbsr _ZeroUnit
clr.w _AutoMode *0:ノーマル 1:オート
clr.w _RndMode *0:ノーマル 1:ランダム
jbsr _FlgClrS
clr.l _SetNameAdd
jbra _B_KLE_D
_FlgClrS:
clr.w _ReptMode *0:ノーマル 1:リピート
clr.w _MemMode *0:ノーマル 1:メモリ
clr.w _BgmMode *0:ノーマル 1:BGM
clr.w _PauseMode *0:特に 1:ポーズ中
clr.w _TrkNo
clr.w _TrkNoS
clr.w _DisSuuzi10 * LED用数字クリア
move.w #-1,_MemPt
move.w #-1,_RndPt
rts
_FlgClr:
jbsr _FlgClrS
jbsr _B_KLE_D2
rts
*--------------曲ステップ
Trew:********* バック
jbsr _CdcModeOn
jbsr _ChkCdRom
clr.w _PauseMode *0:特に 1:ポーズ中
clr.w _BgmMode *0:ノーマル 1:BGM
tst.w _CDIN
jbne @f
moveq #0,d0 *err
rts
@@:
movem.l d1-d2/a0-a2,-(sp)
jbsr _MDPlayingTimeChk
movem.l (sp)+,d1-d2/a0-a2
tst.l d0
bne @f
move.l _plyinf+8,d0 *plyinf.time
cmpi.l #$0000_0010,d0
jbcc 1f
@@: *-----1曲戻る
move.w #1,_PlayScMd
move.l #-1,-(sp)
jbsr _CdPlay_restart
addq.l #4,sp
movem.l d0-d7/a0-a6,-(sp) *ダブルクリック対策
move.w MFP_cmd(pc),d0
move.w MFP_cmd+2(pc),MFP_cmd
clr.w MFP_cmd+2
jbsr KeySns
movem.l (sp)+,d0-d7/a0-a6
jbra _B_KLE_D
1:
*----- その曲の頭から
move.w #1,_PlayScMd
move.l #0,-(sp)
jbsr _CdPlay_restart
addq.l #4,sp
jbra _B_KLE_D
Tff:********* 進む
jbsr _CdcModeOn
jbsr _ChkCdRom
clr.w _PauseMode *0:特に 1:ポーズ中
clr.w _BgmMode *0:ノーマル 1:BGM
move.l #1,-(sp)
move.w #1,_PlayScMd
jbsr _CdPlay_restart
addq.l #4,sp
jbra _B_KLE_D
*--------------時間シーク
Trew_:********* バック
jbsr _CdcModeOn
jbsr _ChkCdRom
tst.w _CDIN
jbne @f
rts
@@: addq.w #1,_TsekSw
move.l #-1,-(sp)
jbsr _SeekDisp
addq.l #4,sp
tst.l d0
jbeq _B_KLE_D
move.w KeySnsEM(pc),_SeekNowMd *0;KEY 1;Trap で使用
moveq #0,d1
jbra _B_KLE_S
Tff_:********* 進む
jbsr _CdcModeOn
jbsr _ChkCdRom
tst.w _CDIN
jbne @f
rts
@@: addq.w #1,_TsekSw
move.l #1,-(sp)
jbsr _SeekDisp
addq.l #4,sp
tst.l d0
jbeq _B_KLE_D
move.w KeySnsEM(pc),_SeekNowMd *0;KEY 1;Trap で使用
moveq #1,d1
jbra _B_KLE_S
_TsekSw:
.dc.w 0 *連続シーク値
Tundo:********* [UNDO]
jbsr _CdcModeOn
jbsr _ChkCdRom
jbsr _DisSuuziCalc
move.l d0,d7
jbeq Tundo_1
move.l _CdTrak(pc),d0
cmp.l d0,d7
jbhi Tundo_1 *d1<=d0max
jbsr _FlgClrS
clr.w _AutoMode *0:ノーマル 1:オート
clr.w _RndMode *0:ノーマル 1:ランダム
move.w #-1,_ReptMode *0:ノーマル 1:リピート
move.l d7,-(sp)
move.l d7,-(sp)
jbsr _CdPlay_hf
addq.l #8,sp
jbsr _MemChkT
jbra _B_KLE_D
Tundo_1:
tst.w _TrkNo
jbne @f
moveq #0,d0
rts
@@: clr.w _AutoMode *0:ノーマル 1:オート
clr.w _RndMode *0:ノーマル 1:ランダム
move.w #-1,_RndPt
clr.w _MemMode *0:ノーマル 1:メモリ
clr.w _BgmMode *0:ノーマル 1:BGM
clr.w _PauseMode *0:特に 1:ポーズ中
clr.w _DisSuuzi10 * LED用数字クリア
not.w _ReptMode *0:ノーマル 1:リピート
bne @f
tst.w _MemLong
beq @f
move.w #-1,_MemMode *メモリされていたら
@@:
jbra _B_KLE_D
Tauto:********* [*]auto
jbsr _CdcModeOn
jbsr _ChkCdRom
clr.w _PauseMode *0:特に 1:ポーズ中
clr.w _ReptMode *0:ノーマル 1:リピート
not.w _AutoMode *0:ノーマル 1:オート
clr.w _BgmMode *0:ノーマル 1:BGM
tst.w _TrkNo
jbne _B_KLE_D
jbsr Tent_sub *演奏
jbra _B_KLE_D
Trnd:********* [/] rand
jbsr _CdcModeOn
jbsr _ChkCdRom
tst.w _RndMode *0:ノーマル 1:ランダム
jbne Trnd_L1
*ランダムスタート
move.w #-1,_RndMode *0:ノーマル 1:ランダム
clr.w _MemMode *0:ノーマル 1:メモリ
clr.w _PauseMode *0:特に 1:ポーズ中
clr.w _ReptMode *0:ノーマル 1:リピート
clr.w _BgmMode *0:ノーマル 1:BGM
move.w #1,_PlayScMd
jbsr _CdPlay_Rnd2
move.l d0,-(sp)
move.l d0,-(sp)
jbsr _CdPlay
addq.l #8,sp
jbsr _MemChkT
jbra _B_KLE_D
Trnd_L1:
*ランダム停止(その曲終われば止まる)
clr.w _RndMode *0:ノーマル 1:ランダム
clr.w _MemMode *0:ノーマル 1:メモリ
clr.w _ReptMode *0:ノーマル 1:リピート
clr.w _BgmMode *0:ノーマル 1:BGM
move.w #-1,_RndPt
jbra _B_KLE_D
Tdel:********* [DEL]
jbsr _CdcModeOn
jbsr _ChkCdRom
tst.w _MemLong
jbne @f
rts
@@: subq.w #1,_MemLong *メモリながさ 0以外ならMEMORY
jbeq _B_KLE_D
move.w _MemLong(pc),_MemPtV *確認表示用メモリポインタ
subq.w #1,_MemPtV *確認表示用メモリポインタ
jbsr _MemChkT
jbsr _B_KLE_M
jbsr _WaitCC_300 *今の1/100s
moveq #0,d0
rts
Tmem:************* [.] memory
jbsr _CdcModeOn
jbsr _ChkCdRom
jbsr _DisSuuziCalc
move.l d0,d7
jbeq _B_KLE_D
move.l _CdTrak(pc),d0
@@: cmp.l d0,d7
jbls @f *d1<=d0max
jbra _B_KLE_D
@@:
lea _MemSock(pc),a1
move.w _MemLong(pc),d0
cmpi.w #PrgMax-1,d0
jbcs @f
jbra _B_KLE_D
@@:
move.b d7,0(a1,d0.w) *登録
move.w _MemLong(pc),_MemPtV *確認表示用メモリポインタ
addq.w #1,_MemLong
jbsr _B_KLE_M
jbsr _MemChkT
jbsr _WaitCC_300 *今の1/100s
moveq #0,d0
rts
Tmemview:**********[,]
jbsr _CdcModeOn
jbsr _ChkCdRom
tst.w _MemLong
jbne @f
rts
@@: addq.w #1,_MemPtV *確認表示用メモリポインタ
move.w _MemPtV(pc),d0
cmp.w _MemLong(pc),d0 * x,y v(y)>=Long
jbcs @f
move.w #-1,_MemPtV *MEM確認表示用メモリポインタ
jbra _B_KLE_D
@@:
jbsr _B_KLE_M
jbsr _WaitCC_300 *今の1/100s
moveq #0,d0
rts
Ttm: *******[ [ ]
jbsr _CdcModeOn
jbsr _ChkCdRom
tst.w _LEDTMRV
jbne @f
moveq #0,d0
rts
@@: clr.w _LEDTMRV
jbra _B_KLE_D
Trvtm: *******[ ]]
jbsr _CdcModeOn
jbsr _ChkCdRom
addq.w #1,_LEDTMRV
and.w #3,_LEDTMRV
jbra _B_KLE_D
Tkigou: ****** [記号入力]
jbsr _CdcModeOn
jbsr _ChkCdRom
jbra _B_KLE_D
Thome: ****** [HOME]
jbsr _CdcModeOn
jbsr _ChkCdRom
jbsr _B_KLE_H
* tst.w _MastVol
* beq @f
* jbsr _NowVol
* move.w d0,_Volum
*@@:
tst.w _CDIN
jbeq ThomeLE
move.l _plyinf,d0 *plyinf.fg
cmpi.b #$11,d0
jbne @f
move.l _plyinf+4,d0 *plyinf.track_no;
move.w d0,_TrkNo
move.w d0,_TrkNoS
jbsr _SetTrkLong
@@: jbsr _MemChkT
ThomeLE:
jbsr _WaitCC2 *今の1/100s
moveq #0,d0
rts
Tesc: ****** [ESC]
_CDCOFF:
jbsr FnkBerChk
jbeq @f
jbsr KillLeds
@@:
clr.w _CdcMode *0:停止中
clr.w _CDIN *0:CDは入っていない 1:入っている
clr.l IocsSwc *白帯で1になったまま終わってしまうともう動かないので初期化
clr.b _CHARBUF *LED文字
clr.w _DtTrak *1;データトラック有り,-1;データのみ
rts
Tbs: ****** [BS]
jbsr _CdcModeOn
jbsr _ChkCdRom
tst.w _CdcMode
jbne @f
rts
@@: tst.w _DisMode *0;非表示 1;表示 2;Small表示
jbne 1f
*表示
move.w #1,_DisMode *1;表示
jbra _B_KLE_D
1: *非表示
jbsr FnkBerChk
jbeq @f
jbsr KillLeds
@@:
cmpi.w #1,_DisMode *0;非表示 1;表示 2;Small表示
jbne @f
*small表示
move.w #2,_DisMode *2;Small表示
jbra _B_KLE_D
@@:
clr.w _DisMode *0;非表示
rts
******** 数値(?)
Tsuz0: moveq #0,d7
jbra Tsuuzi
Tsuz1: moveq #1,d7
jbra Tsuuzi
Tsuz2: moveq #2,d7
jbra Tsuuzi
Tsuz3: moveq #3,d7
jbra Tsuuzi
Tsuz4: moveq #4,d7
jbra Tsuuzi
Tsuz5: moveq #5,d7
jbra Tsuuzi
Tsuz6: moveq #6,d7
jbra Tsuuzi
Tsuz7: moveq #7,d7
jbra Tsuuzi
Tsuz8: moveq #8,d7
jbra Tsuuzi
Tsuz9: moveq #9,d7
Tsuuzi:
jbsr _CdcModeOn
jbsr _ChkCdRom
tst.w _CDIN *0:CDは入っていない 1:入っている
bne @f
jbra _B_KLE_D
@@: move.b _DisSuuzi1,_DisSuuzi10
move.b d7,_DisSuuzi1
jbra _B_KLE_K
TsuzP: ******[+]
jbsr _CdcModeOn
jbsr _ChkCdRom
tst.w _CDIN *0:CDは入っていない 1:入っている
bne @f
jbra _B_KLE_D
@@:
.if 0
jbsr _DisSuuziCalc
tst.l d0
bne @f
*演奏ナンバー
moveq #0,d0
move.w _TrkNo,d0 *演奏していない時は0なので問題無し
@@:
addq.l #1,d0
cmp.l _CdTrak(pc),d0
jbls @f *d1<=d0max
moveq #1,d0
@@: divu #10,d0
move.b d0,_DisSuuzi10
swap d0
move.b d0,_DisSuuzi1
jbra _B_KLE_K
.else
move.l _Ledtrk,d0
addq.l #1,d0
cmp.l _CdTrak(pc),d0
jbls @f *d1<=d0max
moveq #1,d0
@@: divu #10,d0
move.b d0,_DisSuuzi10
swap d0
move.b d0,_DisSuuzi1
jbra _B_KLE_K
.endif
TsuzM: ******[-]
jbsr _CdcModeOn
jbsr _ChkCdRom
tst.w _CDIN *0:CDは入っていない 1:入っている
bne @f
jbra _B_KLE_D
@@:
.if 0
jbsr _DisSuuziCalc
tst.l d0
bne @f
*演奏ナンバー
moveq #0,d0
move.w _TrkNo,d0 *演奏していない時は0なので問題無し
@@:
subq.l #1,d0
cmpi.l #1,d0
jbge @f *d1>=1
move.l _CdTrak(pc),d0
bra 1f
@@:
cmp.l _CdTrak(pc),d0
jbls 1f *d1<=d0max
move.l _CdTrak(pc),d0
1:
divu #10,d0
move.b d0,_DisSuuzi10
swap d0
move.b d0,_DisSuuzi1
jbra _B_KLE_K
.else
move.l _Ledtrk,d0
subq.l #1,d0
cmpi.l #1,d0
jbge @f *d1>=1
move.l _CdTrak(pc),d0
bra 1f
@@:
cmp.l _CdTrak(pc),d0
jbls 1f *d1<=d0max
move.l _CdTrak(pc),d0
1:
divu #10,d0
move.b d0,_DisSuuzi10
swap d0
move.b d0,_DisSuuzi1
jbra _B_KLE_K
.endif
Te: ****** [E]
tst.w _CddevSw
beq @f
**計測用
move.w _CddDrvNo,d0
ori.w #$300,d0
move.w d0,-(sp)
DOS__ _DRVCTRL
addq.l #2,sp
move.w _CddDrvNo,d0
ori.w #$100,d0
move.w d0,-(sp)
DOS__ _DRVCTRL
addq.l #2,sp
bra 1f
@@: **SCSI2用
jbsr _CdEje
1:
clr.w _CDIN *0:CDは入っていない 1:入っている
clr.w _TrkNo
clr.w _TrkNoS
clr.w _DtTrak *1;データトラック有り,-1;データのみ
clr.w _MemMode *0:ノーマル 1:メモリ
clr.w _MemLong *メモリながさ 0以外ならMEMORY
move.w #-1,_MemPt
move.w #-1,_RndPt
clr.w _DisSuuzi10 * LED用数字クリア
jbsr _EJE_EMU
jbsr _WaitCC_100
jbsr _ChkCdRom
jbra _B_KLE_D
Tr: ****** [R]
jbsr _CdReload
jbsr _ChkCdRom
jbra _B_KLE_D
TF1: ****** [F1]
moveq #0,d0
bra Tfunction
TF2: ****** [F2]
moveq #1,d0
bra Tfunction
TF3: ****** [F3]
moveq #2,d0
bra Tfunction
TF4: ****** [F4]
moveq #3,d0
bra Tfunction
TF5: ****** [F5]
moveq #4,d0
bra Tfunction
TF6: ****** [F6]
moveq #5,d0
bra Tfunction
TF7: ****** [F7]
moveq #6,d0
bra Tfunction
TF8: ****** [F8]
moveq #7,d0
bra Tfunction
TF9: ****** [F9]
moveq #8,d0
bra Tfunction
Tfunction:
jbsr _CdcModeOn
tst.w _JukeBox *0:ノーマル 1:JukeBox
beq 1f
clr.w _JukeBox *0:ノーマル 1:JukeBox
bra @f
1:
cmp.w _SCSI_LUN__,d0
bne @f
jbra _B_KLE_D
@@:
move.l d0,-(sp)
*jbsr _StpDsk
jbsr _ZeroUnit
move.l (sp)+,d0
jbsr _SetLUN *LUN変更 d0=LUN
*jbsr _ejeload *トレイを出して直ぐ戻す。MBR-7ならいいが・・・
clr.w _CDIN *0:CDは入っていない 1:入っている
clr.w _TrkNo
clr.w _TrkNoS
clr.w _DtTrak *1;データトラック有り,-1;データのみ
clr.w _MemMode *0:ノーマル 1:メモリ
clr.w _MemLong *メモリながさ 0以外ならMEMORY
move.w #-1,_MemPt
move.w #-1,_RndPt
clr.w _DisSuuzi10 * LED用数字クリア
jbsr _EJE_EMU
jbsr _WaitCC_100
jbra _B_KLE_D
TF10: ****** [F10]
move.w #1,_JukeBox *0:ノーマル 1:JukeBox
jbsr _CdcModeOn
jbsr _ChkCdRom
jbsr _B_KLE_LD
jbsr _ZeroUnit
clr.w _CDIN *0:CDは入っていない 1:入っている
clr.w _TrkNo
clr.w _TrkNoS
clr.w _DtTrak *1;データトラック有り,-1;データのみ
clr.w _MemMode *0:ノーマル 1:メモリ
clr.w _MemLong *メモリながさ 0以外ならMEMORY
move.w #-1,_MemPt
move.w #-1,_RndPt
clr.w _DisSuuzi10 * LED用数字クリア
jbsr _CdListRead
jbra _B_KLE_D
.if 1
Tbankid:
***** [ex] Bank ID
move.w _SCSI_BANKID,d0
jbmi _B_KLE_D * 指定ないので無視
jbsr _ZeroUnit
move.w _SCSI_BANKID,d0
move.w _SCSI_ID+2,_SCSI_BANKID
move.w d0,_SCSI_ID+2 * ID
move.w d0,_SCSI_IDF+2 * ID
eori.w #$FF,_SCSI_IDSW
movem.l d0-d2/a0-a2,-(sp)
jbsr _DEVICE_chk
movem.l (sp)+,d0-d2/a0-a2
clr.w _CDIN *0:CDは入っていない 1:入っている
clr.w _TrkNo
clr.w _TrkNoS
clr.w _DtTrak *1;データトラック有り,-1;データのみ
clr.w _MemMode *0:ノーマル 1:メモリ
clr.w _MemLong *メモリながさ 0以外ならMEMORY
move.w #-1,_MemPt
move.w #-1,_RndPt
clr.w _DisSuuzi10 * LED用数字クリア
jbsr _EJE_EMU
jbsr _WaitCC_100
jbra _B_KLE_D
.endif
_DisSuuziCalc:
**********************
*
*リターン d0=入力されてる数値
*
moveq #0,d0
move.b _DisSuuzi10,d0
move.w d0,d1
lsl.w #3,d0
add.w d1,d0
add.w d1,d0 * x10
moveq #0,d1
move.b _DisSuuzi1,d1
add.w d1,d0
rts
Waiting:*-----------------------------
* タイミング 1秒待ち
*
*//[引数] d1.w=前のタイム($09CC.w)
*[戻り値] bcs まだ
* bcc キー入力
*
move.w _PlyTD(pc),d1
beq Wait_L1
***演奏開始直後
move.w _KeyTD(pc),d1 *前の1/100s
sub.w $09CC.w,d1 *今の1/100s
jbeq Wait_L2
jbcc @f
add.w #6000,d1
@@: cmp.w _PlyTD(pc),d1 *1秒見る
bcc @f
rts
@@: clr.w _PlyTD
rts
Wait_L1: ***ノーマル
move.w _KeyTD(pc),d1 *前の1/100s
sub.w $09CC.w,d1 *今の1/100s
jbeq Wait_L2
jbcc @f
add.w #6000,d1
@@: tst.w _TrkNo
jbeq @f
**演奏中
cmp.w _KeyTDCT(pc),d1 *1秒見る
rts
@@: **停止中
cmp.w _NoPlWitT(pc),d1 *1秒見る
rts
Wait_L2: **?? TIMER-C が動いていない
moveq #10,d1
subq.l #1,_TnLC
cmp.l _TnLC(pc),d1 *
rts
_WaitCC:*-----------------------------
move.w $09CC.w,_KeyTD *今の1/100s
move.l #TnLC_,_TnLC *今のカウント
rts
_WaitCC2:*-----------------------------[演奏用間隔]
move.w _PlyWitT(pc),_PlyTD
move.w $09CC.w,_KeyTD *今の1/100s
move.l #TnLC_,_TnLC *今のカウント
rts
_WaitCC_100:*-----------------------------[1秒間隔]
move.w #100,_PlyTD
move.w $09CC.w,_KeyTD *今の1/100s
move.l #TnLC_,_TnLC *今のカウント
rts
_WaitCC_200:*-----------------------------[2秒間隔]
move.w #200,_PlyTD
move.w $09CC.w,_KeyTD *今の1/100s
move.l #TnLC_,_TnLC *今のカウント
rts
_WaitCC_300:*-----------------------------[3秒間隔]
move.w #300,_PlyTD
move.w $09CC.w,_KeyTD *今の1/100s
move.l #TnLC_,_TnLC *今のカウント
rts
LoopChkSub:*--------------------------------
movem.l d0-d2/a0-a2,-(sp)
jbsr FnkBerChk
jbeq @f
jbsr DrawLeds
@@: movem.l (sp)+,d0-d2/a0-a2
rts
LoopChk:*---------------------------
*
* 危険な割り込み
* 壊れるレジスタ無し
*
tst.w _CdcMode
jbne @f
rts
@@:
move.l d1,-(sp)
jbsr Waiting
movem.l (sp)+,d1 *ccr壊さないように
jbcc @f
rts
@@:
jbsr LoopChkSub
LoopChk_:
****SCSI CHK
jbsr ScsiUseChk
jbeq @f *つかえる
rts
@@:
move.w $09CC.w,_KeyTD *今の1/100s
move.l #TnLC_,_TnLC *今のカウント
movem.l d0-d7/a0-a6,-(sp)
jbsr _ChkCdRom
move.w _PauseMode(pc),d1 *0:特に 1:ポーズ中
jbeq @f
jbsr _B_KLE_D2
jbra TCE
@@:
move.w _BgmMode(pc),d1 *tst
jbeq @f
jbsr _CdPlay_Bgm
jbra TCE
@@:
move.w _ReptMode(pc),d1 *tst
jbeq @f
jbsr _CdPlay_Rept
jbra TCE
@@:
move.w _RndMode(pc),d1 *tst
jbeq @f
jbsr _CdPlay_Rnd
jbra TCE
@@:
move.w _MemMode(pc),d1 *tst
jbeq @f
jbsr _CdPlay_Mem
jbra TCE
@@:
move.w _AutoMode(pc),d1 *tst
jbeq @f
jbsr _CdPlay_Auto
jbra TCE
@@:
jbsr _CdPlay___
TCE: movem.l (sp)+,d0-d7/a0-a6
rts
ScsiUseChk:*-------------------------------
*
* jbeq :使える
* jbne :つかえない
*
movem.l d0/d1/d4/a1,-(sp)
.ifdef SCSI_USECHK_MODE1
move.w SUC,d1
jbne SUC_NE
jbsr PHASE_DISP
andi.b #$07,d0
jbne SUC_NE2
.else
move.l _SCSI_ROMB(pc),a1
move.b $D(a1),d1
andi.b #$F0,d1
jbne SUC_NE
move.b $B(a1),d1
andi.b #$07,d1
jbne SUC_NE
.endif
lea $E84040,a1 *DMAC #1
btst.b #3,(a1)
jbne SUC_NE
*lea $E84080,a1 *DMAC #2
*btst.b #3,(a1)
*bne SUC_NE
moveq #0,d1
movem.l (sp)+,d0/d1/d4/a1
rts
SUC_NE: *====使えない
*なぜ使えないかチェック
jbsr PHASE_DISP
andi.b #$07,d0
SUC_NE2:
cmpi.b #$03,d0
bne @f
bsr _scsi_cmd_chk
@@:
moveq #-1,d1
movem.l (sp)+,d0/d1/d4/a1
rts
PHASE_DISP:
*------------------------
* PHASE 実行
* d1も破壊
*[out] SCSI PHASE の戻り値
*
move.l _TwsFlg,d0
cmpi.l #-2,d0
beq @f
moveq #_S_PHASE,d1
jbra SCALL_JMP
@@:
move.l d4,-(sp)
move.l _SCSI_IDF(pc),d4
move.l #$200+_S_PHASE,d1 *TWOSCSIコール
jbsr SCALL_JMP
move.l (sp)+,d4
rts
_CdListRead:*------------------------------------------------------
*
* out ; d0 = 0 CDがあってタイトルリストにもあった。
* != 0 それ以外
*
*------------------------------------------------------------
tst.w _JukeBox
jbne _CLR_Juke
*=====
move.b #1,DosSwc
*======ファイル関係をさわるので BREAK KILL
move.w #-1,-(sp)
DOS _BREAKCK
addq.l #2,sp
move.w d0,_CdLRBC
move.w #2,-(sp)
DOS _BREAKCK
addq.l #2,sp
*======CDメディアの情報をゲット
jbsr _CdListSub
tst.l d0
jbpl @f
*======CDメディアが入っていない
clr.b CDCLIST_FILENAME *リストファイル無し
jbra _CdLRER
@@: *======CDメディアがあった
*======環境変数 CDCLIST をチェック
pea CDCLIST_FILENAME(pc)
clr.l -(sp)
pea CDCLIST_NAME(pc)
DOS _GETENV
lea 12(sp),sp
tst.l d0
jbpl @f
*======環境変数 CDCLIST がないので、リストファイル無し
clr.b CDCLIST_FILENAME
jbra _CdLRER
@@: *======リストファイルオープン
move.w #0,-(sp)
pea CDCLIST_FILENAME(pc)
DOS__ _OPEN
addq.l #6,sp
tst.l d0
jbmi _CdLRER *エラー
jbsr _FgetsInit *READ SUB 初期化
*======リストファイル読み込み
move.w d0,Hendl
move.l d0,-(sp)
bsr _CdListDisp
addq.l #4,sp
clr.l _SetNameAdd
move.l d0,d1
jbpl @f
*======リストファイルにはなかった。
move.w Hendl(pc),-(sp)
DOS__ _CLOSE
addq.l #2,sp
*jbsr _CdNameClr *念のため初期化
jbra _CdLRER
@@: *======リストファイルにあった。
move.w Hendl(pc),-(sp)
DOS__ _CLOSE
addq.l #2,sp
*======BREAK モードを戻す
move.w _CdLRBC(pc),-(sp)
DOS _BREAKCK
addq.l #2,sp
move.w #1,_CDIN
clr.b DosSwc
moveq #0,d0 *正常
rts
_CdLRER:*======エラーなど
jbsr _NoTtlFile
*======BREAK モードを戻す
move.w _CdLRBC(pc),-(sp)
DOS _BREAKCK
addq.l #2,sp
move.w #1,_CDIN
clr.b DosSwc
moveq #-1,d0
rts
_CLR_Juke::
*----------------------------------
* JukeBox モードの時。
*----------------------------------
move.b #1,DosSwc
*======ファイル関係をさわるので BREAK KILL
move.w #-1,-(sp)
DOS _BREAKCK
addq.l #2,sp
move.w d0,_CdLRBC
move.w #2,-(sp)
DOS _BREAKCK
addq.l #2,sp
*======環境変数 CDCLIST をチェック
pea CDCLIST_FILENAME(pc)
clr.l -(sp)
pea CDCLIST_NAME(pc)
DOS _GETENV
lea 12(sp),sp
tst.l d0
jbmi @f
*======リストファイルオープン
move.w #0,-(sp)
pea CDCLIST_FILENAME(pc)
DOS__ _OPEN
addq.l #6,sp
tst.l d0
jbmi @f *エラー
jbsr _FgetsInit *READ SUB 初期化
jbra 1f
@@: *======リストファイル無し
clr.b CDCLIST_FILENAME
moveq #0,d0
1: *======CD&リストファイル読み込み
move.w d0,Hendl
move.l d0,-(sp)
bsr _CdListDispMC
addq.l #4,sp
clr.l _SetNameAdd
*======オープンしたファイルを閉じる
move.w Hendl(pc),d0
beq @f
move.w d0,-(sp)
DOS__ _CLOSE
addq.l #2,sp
@@: *======BREAK モードを戻す
move.w _CdLRBC(pc),-(sp)
DOS _BREAKCK
addq.l #2,sp
move.w #1,_CDIN
clr.b DosSwc
moveq #0,d0 *正常
rts
_CdLRBC:
.dc.w 0
*------------------------------------------
.include CDRD.s
.include CDRC_.s
.include CDRT.s
_SetLUN_:
move.l 4(sp),d0
*jbra _SetLUN
_SetLUN:*----------------------------------
*
* d0=LUN
* d0は破壊
*
move.w d0,_SCSI_LUN__ *LUN変更
move.w d0,_SCSI_IDF *LUN変更
ori.w #$8000,_SCSI_IDF *上位ビット立てておく
lsl.w #5,d0
move.b d0,_SCSI_LUN *LUN変更
movem.l d0-d2/a0-a2,-(sp)
jbsr _DEVICE_chk
movem.l (sp)+,d0-d2/a0-a2
rts
_ChkCdRom:*----------------------------------
*
* なにやるもこれを一度コール
* 以下_plyinfに引数がセットされる
*
jbsr _WaitCC *今の1/100s
tst.w _JukeBox
jbeq _ChkCdL1
*======多連装
bsr ChkPly_S1
tst.l d0
jbeq 1f **OK!
** エラー、演奏停止
move.l #$13,_plyinf
clr.w _TrkNo
clr.w _TrkNoS
*bra _FlgClrS
clr.w _ReptMode *0:ノーマル 1:リピート
clr.w _MemMode *0:ノーマル 1:メモリ
clr.w _BgmMode *0:ノーマル 1:BGM
clr.w _PauseMode *0:特に 1:ポーズ中
clr.w _TrkNo
clr.w _TrkNoS
move.w #-1,_MemPt
move.w #-1,_RndPt
rts
1:
move.l _plyinf(pc),d0
cmpi.b #$11,d0
jbeq @f
cmpi.b #$12,d0
jbeq @f
clr.w _TrkNo
@@: rts
*====== 単装
_ChkCdL1:
move.w _CDIN(pc),d0 *0:CDは入っていない 1:入っている
bne 1f
*======
movem.l d1-d4,-(sp)
move.l _SCSI_IDF,d4
SCSI__ _S_TESTUNIT
*jbsr SCALL_JMP
movem.l (sp)+,d1-d4
tst.l d0
beq 1f
cmpi.l #1,d0
beq 1f
bra ChkCR_NoCd **エラー
1:
bsr ChkPly_S1
tst.l d0
jbne ChkCR_NoCd **エラー
move.l _plyinf(pc),d0
cmpi.b #$11,d0
jbeq @f
cmpi.b #$12,d0
jbeq @f
clr.w _TrkNo
@@:
move.w _CDIN(pc),d0 *0:CDは入っていない 1:入っている
jbne @f
jbsr _B_KLE_LD
jbsr _CdListRead
rts
@@:
rts
ChkCR_NoCd:
tst.w _KeySwi *1;キー入力可能 0;不可能
bne @f
rts
@@:
move.w _CDIN(pc),d0 *0:CDは入っていない 1:入っている
bne @f
rts
@@:
*** 前は入っていた・・・
movem.l d1-d2/a0-a2,-(sp) * 一瞬のエラーはここで
jbsr _CDROM_chk * 吸収出来る。
movem.l (sp)+,d1-d2/a0-a2
tst.l d0
bne @f
rts
@@:
*** CDは出された
clr.w _CDIN *0:CDは入っていない 1:入っている
clr.w _LEDVMOD
clr.w _CdLong *長さ
clr.w _CdTrak *そのCDの曲数(拡張トラック対応)
clr.w _TrkNo
clr.w _TrkNoS
clr.w _DisSuuzi10 * LED用数字クリア
clr.b _CdName *CD名
clr.w _ReptMode *0:ノーマル 1:リピート
clr.w _MemMode *0:ノーマル 1:メモリ
clr.w _BgmMode *0:ノーマル 1:BGM
clr.w _PauseMode *0:特に 1:ポーズ中
clr.w _MemLong *メモリながさ 0以外ならMEMORY
clr.w _DtTrak *1;データトラック有り,-1;データのみ
move.w #-1,_MemPt
move.w #-1,_RndPt
rts
ChkCR_ChainCd:
clr.w _LEDVMOD
clr.w _DisSuuzi10 * LED用数字クリア
jbsr _B_KLE_LD
jbsr _CdListRead
rts
ChkPly_S1:
*-----------------------------
*
* beq OK
* bne エラー
*
tst.w _PLAYSCCAL * 1;演奏中極力 SCSI コールをしない
beq @f
tst.w _PauseMode * Pause 中?
bne @f
tst.w _TrkNo * 演奏している?
beq @f
bra 1f
@@:
move.l #-1,_cps_ot
pea _plyinf(pc)
jbsr _ChkPly
addq.l #4,sp
tst.l d0
beq @f
pea _plyinf(pc)
jbsr _ChkPly
addq.l #4,sp
tst.l d0
beq @f
rts
@@:
jbsr _ChkPlyDisp
moveq #0,d0
rts
1:
*------
tst.l _cps_ot
bmi CPS_L1
*=========== 2度目以降
*--------
* move.w _TrkNo,d0
* cmp.w _cps_trkno(pc),d0
* bne CPS_L1 * track が変わった
move.l _cps_track,d0
* bmi @f
cmp.l _plyinf+4,d0
bne CPS_L1 * track が変わった
@@:
IOCS _ONTIME
sub.l _cps_ot(pc),d0
bpl @f
addi.l #8640000,d0
@@:
move.l d0,-(sp)
jbsr _tim2msf
addq.l #4,sp
move.l d0,-(sp)
move.l _cps_adds(pc),-(sp)
jbsr _addtime_
addq.l #8,sp
move.l d0,_plyinf+12 * plyinf.adds
cmp.l _CdLong,d0
bcc CPS_L1
* move.l _plyinf+4,_cps_track
jbsr _ChkPlyDisp
move.l _cps_track,d0
cmp.l _plyinf+4,d0
bne CPS_L1 * track が変わった
moveq #0,d0
rts
CPS_L1:
*=========== はじめて
move.l #-1,_cps_ot
*-------- まずは今の状態を記憶
pea _plyinf(pc)
jbsr _ChkPly
addq.l #4,sp
tst.l d0
beq @f
pea _plyinf(pc)
jbsr _ChkPly
addq.l #4,sp
tst.l d0
beq @f
rts
@@:
jbsr _ChkPlyDisp
move.l _plyinf(pc),d0
cmpi.b #$11,d0
beq @f
*------ 演奏していない
moveq #0,d0
rts
@@:
*move.l #-1,_cps_track
move.l _plyinf+4,_cps_track
move.w _TrkNo,_cps_trkno * plyinf.track_no
move.l _plyinf+12,_cps_adds * plyinf.adds
IOCS _ONTIME
move.l d0,_cps_ot
moveq #0,d0
rts
_cps_ot:
.dc.l -1 * 計測開始の ONTIME
_cps_adds:
.dc.l -1 * 計測開始の address
_cps_trkno:
.dc.w -1 * 計測開始の TraNo
_cps_track:
.dc.l -1 * 計測開始の track
_REQUEST_SENSE:
*---------------------------------------
*
* SCSIコマンドエラーをチェック&記憶
* ERREMU用バッファに確保
*
movem.l d0/d1/d3/d4/a1,-(sp)
move.l _SCSI_IDF(pc),d4
lea.l _REQU_BUF(pc),a1
moveq #18,d3
SCSI__ _S_REQUEST
move.l d0,_REQU_D0_BUF
move.b 2(a1),_REQU_PTR_KEY
move.b 12(a1),_REQU_PTR_ASC
move.b 13(a1),_REQU_PTR_ASCQ
move.b 2(a1),d0
andi.b #$0F,d0
beq _RESE_L1 *0なら終了
cmpi.b #6,d0 *unit attentionなら絶対ERRエミュ
beq @f
tst.w _REQU_PTR
bne _RESE_L1 *既にERREMUが用意してあるなら終了
@@:
move.w #-1,_REQU_CHK
move.l (a1),_REQU_PTR *
move.l 4(a1),_REQU_PTR+4 *
move.l 8(a1),_REQU_PTR+8 * 18byte copy
move.l 12(a1),_REQU_PTR+12 *
move.w 16(a1),_REQU_PTR+16 *
move.l _REQU_D0_BUF(pc),_REQU_D0
_RESE_L1:
movem.l (sp)+,d0/d1/d3/d4/a1
rts
_EJE_EMU:*---------------------------------------
*
* エジェクトエミュする
*
move.l #$70_00_06_00,_REQU_PTR *
@@: move.l #$00_00_00_00,_REQU_PTR+4 *
move.l #$00_00_00_00,_REQU_PTR+8 * 18byte copy
move.l #$00_00_00_00,_REQU_PTR+12 *
move.w #$00_00_00_00,_REQU_PTR+16 *
clr.l _REQU_D0
move.w #-1,_REQU_CHK
rts
_EJE_EMU2:*---------------------------------------
move.l #$70_00_02_00,_REQU_PTR * イジェクト状態
bra @b
_CdEje: *---------------------------------------
*
* エジェクト
*
movem.l d3/d4,-(sp)
move.l _SCSI_IDF(pc),d4
moveq #$00,d3
SCSI__ _S_PAMEDIUM
cmpi.l #2,d0
bne @f
jbsr _REQUEST_SENSE
@@:
tst.w _SWPD * /pdがある?
beq 1f
**PD用
move.l #$8000_0000,d4 *PD-DRIVE対策 LUN消し
move.w _SCSI_ID+2(pc),d4
moveq #$00,d3
SCSI__ _S_PAMEDIUM
cmpi.l #2,d0
bne @f
jbsr _REQUEST_SENSE
@@:
1: tst.w _CDIN *0:CDは入っていない 1:入っている
beq @f *
move.l _SCSI_IDF(pc),d4
@@: *moveq #$02,d3 *EJECT
*SCSI__ _S_STARTSTOP
move.l #2,-(sp)
jbsr _scsi_startstop
addq.l #4,sp
cmpi.l #2,d0
bne @f
jbsr _REQUEST_SENSE
@@:
movem.l (sp)+,d3/d4
movem.l d0-d7/a0-a6,-(sp)
bsr _ChkCdRom
movem.l (sp)+,d0-d7/a0-a6
rts
_CdReload:*---------------------------------------
*
* リロード
* ☆)多連装対策に全てのLUNに対してリロード?!
*
tst.w _LUN_MAX
bne 1f
movem.l d3/d4,-(sp)
move.l _SCSI_IDF(pc),d4
moveq #$00,d3
SCSI__ _S_PAMEDIUM
cmpi.l #2,d0
bne @f
jbsr _REQUEST_SENSE
@@: *moveq #$03,d3
*SCSI__ _S_STARTSTOP
move.l #3,-(sp)
jbsr _scsi_startstop
addq.l #4,sp
cmpi.l #2,d0
bne @f
jbsr _REQUEST_SENSE
@@: movem.l (sp)+,d3/d4
rts
1:
movem.l d3/d4/d6/d7,-(sp)
move.l _SCSI_IDF,-(sp)
move.b _SCSI_LUN,-(sp)
move.w _LUN_MAX,d7
subq.w #1,d7
move.w #$8000,_SCSI_IDF * 最上位bitを立てておく
clr.b _SCSI_LUN
9:
move.l _SCSI_IDF(pc),d4
moveq #$00,d3
SCSI__ _S_PAMEDIUM
cmpi.l #2,d0
bne @f
jbsr _REQUEST_SENSE
@@: move.l #3,-(sp)
jbsr _scsi_startstop
addq.l #4,sp
cmpi.l #2,d0
bne @f
jbsr _REQUEST_SENSE
@@:
addq.w #$0001,_SCSI_IDF
addi.b #$20,_SCSI_LUN
dbra d7,9b
move.b (sp)+,_SCSI_LUN
move.l (sp)+,_SCSI_IDF
movem.l (sp)+,d3/d4/d6/d7
rts
*RedTOC用----------------------------------------
_leadout_address_:
.dc.l 0
_min_: .dc.l 0
_max_: .dc.l 0
_SetKeyTDCT:
*********************************************
* 演奏中の割り込み間隔値 設定
*
* d0.l = 数値
*
* 1秒で16になるようにセット
*
movem.l d0-d1,-(sp)
move.w d0,_KeyTDCT *演奏中の割り込み間隔
moveq #FadeOutSpeed,d1
mulu d0,d1 *(FadeOutSpeed x 数値)
divu #100,d1 * FadeOutSpeed x 数値 / 100
move.w d1,_FadeoutDec *フェードアウト中の減り値
bne @f
move.w #1,_FadeoutDec * 0なら1にして置く
@@:
movem.l (sp)+,d0-d1
rts
*********************************************************
.include CDRC__.s
.include SCSIC.s
.even
_SS_:
*-------------------------
* タイミング関係
*-------------------------
_KeyTD:
.dc.w 0 *前の1/100s
_PlyTD:
.dc.w 0 *Ply後の待ちタイム
_TnLC:
.dc.l $0000 *カウント
Hendl:
.dc.l 0
_ScscUse:
.dc.w 0 *0;つかっていない
_SeekNow:
.dc.l -1 *-1;non !=;シーク中
_SeekNowTk:
.dc.w 0 *_SeekNow補佐 trakno
_SeekNowMd:
.dc.w 0 *0;KEY 1;Trap で使用
_KeyPush:
.dc.w 0 *なにかキーを押している?
_ScscChksw:
.dc.w 0 *1;STSIN MSGIN の実行待ち
******************(commandでも使用するが自作すること)
_pListName: .dc.l _ListName
_pListLong: .dc.l _ListName+(DefTrkMax*40)
_pListStTm: .dc.l _ListName+(DefTrkMax*40)+(DefTrkMax*4)
******************(commandでも使用)
KeepLong: .dc.l (DefTrkMax*40)+(DefTrkMax*4)+(DefTrkMax*4)
__COM__:
*-------------------------
* キー関係
*-------------------------
*| 0 0 0 0 OPT.2 OPT.1 CTRL SHIFT | XF3 XF2 XF1 0 0 0 0 0| 0 0 0 0 0 0 XF5 XF4
_SFTK:
.dc.l 1
_KeySwi:
.dc.w 1 *1;キー入力可能 0;不可能
_CmdC_Mod:
.dc.w 0 *CmdC_List /b[n]
CmdC_List:
defccl
CmdC_ListD:
defccl
KeyC_List:
.dc.b $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
.dc.b $10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$1A,$1B,$1C,$1D,$1E,$1F
.dc.b $20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$2A,$2B,$2C,$2D,$2E,$2F
.dc.b $30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$3A,$3B,$3C,$3D,$3E,$3F
.dc.b $40,$41,$42,$43,$44,$45,$46,$47,$48,$49,$4A,$4B,$4C,$4D,$4E,$4F
.dc.b $50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$5A,$5B,$5C,$5D,$5E,$5F
.dc.b $60,$61,$62,$63,$64,$65,$66,$67,$68,$69,$6A,$6B,$6C,$6D,$6E,$6F
.dc.b $70,$71,$72,$73,$74,$75,$76,$77,$78,$79,$7A,$7B,$7C,$7D,$7E,$7F
.even
*-------------------------
* LED関係
*-------------------------
_LEDVMOD:
.dc.w 0 *0;B_KLE_D,B_KLE_D
*1;B_KLE_M,B_KLE_K
_CHARBUF:
.dcb.b 40,0 *LEDに表示されている文字列
_LEDBUF:
.dcb.b 10*16,$FF *テキスト表示用のパターンバンク
_NAMEBUF:
.dcb.b 40*16,$FF
_DRAWADDS:
*.dc.l $E40000+31*16*$80+2
.dc.l $E40000+29*16*$80+49
HanRomAdd:
.dc.l $00f3a800
_DisForce:
.dc.w 0 *0;ノーマル 1;TEXTを使っていても表示させる!!
_DisMode:
.dc.w 1 *0;非表示 1;表示 2;Small表示
*-------------------------
* CD(MODE)管理関係
*-------------------------
_CDIN:
.dc.w 0 *0:CDは入っていない 1:入っている
_TrkNo:
.dc.w 0 *演奏中 トラックナンバー 0;停止
_TrkNoS:
.dc.w 0 *最後に演奏のトラックナンバー
_PauseMode:
.dc.w 0 *0:特に 1:ポーズ中
_CdcMode:
.dc.w 1 *0:停止中 1:運転中
_AutoMode:
.dc.w 0 *0:ノーマル 1:オート
_RndMode:
.dc.w 0 *0:ノーマル 1:ランダム
_ReptMode:
.dc.w 0 *0:ノーマル 1:リピート
_BgmMode:
.dc.w 0 *0:ノーマル 1:BGM
_BgmStAdds:
.dc.l 0
_BgmEdAdds:
.dc.l 0
_JukeBox:
.dc.w 0 *0:ノーマル 1:JukeBox
_Fadeouting:
.dc.w 0 *0:ノーマル 1:フェードアウト中
_FadeoutVol:
.dc.w 0 *フェードアウト中のボリューム
_FadeoutDec:
.dc.w FadeOutSpeed *フェードアウト中の減り値
*-------------------------
* プログラム(RND)関係
*-------------------------
_MemMode:
.dc.w 0 *0:ノーマル 1:メモリー
_MemPt:
.dc.w -1 *メモリポインタ
_MemPtV:
.dc.w 0 *確認表示用メモリポインタ
.dc.w PrgMax
_MemLong:
.dc.w 0 *メモリながさ 0以外ならMEMORY
_MemSock:
.dcb.b PrgMax+16,0 *メモリ
.even
_RndPt:
.dc.w -1 *ランダムポインタ
_RndLong:
.dc.w 0 *ランダムテーブルながさ
_RndSock:
.dcb.b TrkMax,0 *ランダムテーブル
.even
*-------------------------
* SCSI直接関係
*-------------------------
_SCSI_ROMB:
.dc.l 0
_SCSI_IDF:
.dc.l $8000_0006 *LUNを上位wordに置いたもの(そのままd4へ)
_SCSI_ID:
.dc.l 6
_SCSI_LUN:
.dc.b 0 *lunを<<5したもの
.even
_SCSI_LUN__:
.dc.w 0 *lun控え
_SCSI_BANKID:
.dc.w -1 *切り換え ID
_SCSI_IDSW:
.dc.w 0 * 0;通常 1;ID,切換てる
_CddevSw:
.dc.w 0 *0: SCSI直接 1:計測IOCTRL
_CddDrvNo:
.dc.w 0 *計測IOCTRL用ドライヴNO
_LUN_MAX:
.dc.w 0
_SWPD:
.dc.w 0 * /pdがある?
_TestunitSw:
.dc.w 0 *-1;AUDIOONLYなら未挿入 1;演奏中未挿入 0;そのまま
_DiSwc:
.dc.b 0 * /di[n] の nの値 1;割り込みを止める 0;止めない
.even
_DeviType:
.dc.w 0 * デバイス TYPE がはいる
_PLAYSCSTS:
.dc.w 0 *0; 1;STSIN待ち 0;待たず
_PLAYSCCAL:
.dc.w 0 *0; 1;演奏中極力 SCSI コールをしない
_TwsFlg:
.dc.w -1 * TWOSCSI フラグ -2 なら PHASE 気を付ける
*-------------------------
* REQUEST関係
*-------------------------
_REQU_CHK:
.dc.w 0
_REQU_BUF: *buffer
*.dc.b $70
.ds.b 17+1
.even
_REQU_D0_BUF:
.dc.l 0
_REQU_PTR:
*.dc.b $70
.ds.b 17+1
.even
_REQU_D0:
.dc.l 0
_REQU_PTR_KEY
.dc.b 0
_REQU_PTR_ASC
.dc.b 0
_REQU_PTR_ASCQ
.dc.b 0
.even
*-------------------------
* 内部ワーク関係
*-------------------------
_OvTrak:
.dc.w 0 *1;トラックが足りなかった
_ExTrak:
.dc.w 0 *1;拡張トラックあり
_DtTrak:
.dc.w 0 *1;データトラック有り,-1;データのみ
_CeTrak:
.dc.w 0 *1;中間曲名あり
_MD_SeqSecTrak:
.dc.w 0 *MD専用..-1;セパレートセクタトラック有り,0;なし
_MD_MonoTrak:
.dc.w 0 *MD専用..-1;MONOトラックのみ,1;有り(禁止),0;なし
_MD_PlayOnly:
.dc.w 0 *MD専用..0;録再MEDIA 1;再生専用MEDIA
_PlyWitT:
.dc.w 100 *演奏開始後の待ち間隔
_KeyTDCT:
.dc.w 100 *演奏中の割り込み間隔
_NoPlWitT
.dc.w 100 *演奏中でない時の割り込み間隔
_STFLAG:
.dc.w SF *常駐チェック用
IocsSwc:
.dc.b 0
ScIocsSwc:
.dc.b 0
DosSwc:
.dc.b 0
.even
_MuTmMod:
.dc.w 0 *0:ノーマル 1:強引にキーベクタを書き替え
CDCLIST_NAME:
.dc.b 'CDCLIST',0 *タイトルリストファイル用
.even
CDCLIST_FILENAME:
.ds.b 256
.even
*--- 計測専用ワーク
_CddevPauAdd:
.dc.l 0
_CddevPlaEnd:
.dc.l 0
_CddevPauseD:
.dc.w 0
*--- MD専用ワーク
_PlayingTimeMD:
.dc.l 0
*-------------------------------------
*
*
*-------------------------------------
*-- 読み込み用
_O_CdTrak: .dc.l 0 *そのCDの本当の曲数
_O_ListLong: .dcb.l 100,0 *各トラックの本当のながさ時間
_O_ListStTm: .dcb.l 100,0 *各トラックの本当のスタート時間 最上位ビットが立って入れば データトラック
*-- 本当のTrkNoを CDC管理用Noに変換テーブル
_ListTrak: .dcb.b 9*100,0 *
*
*
.even
_TitleTy:
.ds.b 9
.even
*-------------------------------------
* 内部ワーク関係(trapで返す)
*-------------------------------------
*----------列びを変えてはいけない
*ChkPly用
.dc.w 0 *CDIN ひかえ
_plyinf:
.dc.l 0 *int fg; /* 状態 0x11 演奏中,0x12 演奏中断 */
.dc.l 0 *int track_no; /* 曲番号 */
.dc.l 0 *int time; /* 現在の演奏時間 */
.dc.l 0 *int address; /* 演奏アドレス */
.dc.l 0 *int track_long; /* 演奏中の曲のながさ*/
.dc.l 0 * CD名アドレス
_SetNameAdd:
.dc.l 0 * 曲名アドレス
_Ledtta:
.dc.l 0 * LED文字アドレス
_Ledtrk:
.dc.l 0 * LED数値 曲番号
_Ledprg:
.dc.l 0 * LED数値 プログラムナンバー 0;非表示 -1:MAX= -2:INP=
_Ledtim:
.dc.l 0 * LED数値 MSF型
_Ledflg:
.dc.l 0 * LEDその他の状態
_DisSuuzi10:
.dc.b 0 * LED用数字 10の位
_DisSuuzi1:
.dc.b 0 * LED用数字
_LEDTMRV:
.dc.w 0 *0;ノーマル 1;リバース 2;トータル 3;トータルリバース
_Volum:
.dc.w 255 *現在のボリューム
_MastVol:
.dc.w 0 *マスターボリューム
**チェックのため、ここにある
_CdPlayEndAdds:
.dc.l 0
_CdPlayEndTrak:
.dc.l 0
*----------列びを変えてはいけない
.dc.w 0
_CdcTrak: .dc.l DefTrkMax *CDCの最大記憶数
_CdTrak: .dc.l 0 *そのCDの曲数(拡張トラック対応)
_CdLong: .dc.l 0 *長さ
_CdListS: .dc.l 0 *CDLISTにあるなら 1
_CdName: .dcb.b 40,0 *CD名
ES:****↑↑絶対常駐部
_ListName: .dcb.b 40*TrkMax,0 *メモリ 40文字まで
_ListLong: .dcb.l TrkMax,0 *ながさ時間
* 最上位ビットが立って入れば 拡張曲名あり
* v
* (TSM0MMMM_MMMMMMMM_SSSSSSSS_FFFFFFFF)
* ^ MD 用 BIT ; セパレート セクタ トラック
* ^ MD 用 BIT ; MONO トラック
*
_ListStTm: .dcb.l TrkMax,0 *スタート時間
* 最上位ビットが立って入れば データトラック
* v
* (TS0KLLLL_MMMMMMMM_SSSSSSSS_FFFFFFFF)
* ^ ^ロジカル有効フラグ
* ^ ^^^^ ロジカル
* ^ MD 用 BIT ; デジタル トラック
.even
* ListLongに拡張曲名fgあれば
* _ListLongの後ろからチェック 0xFF0000+曲ナンバーがあるはず
* 対応する_ListStTmにオフセット値がある
* あっても次のものをチェックすること
* 決まった場合対応する(_ListName)+2から拡張曲名がある
*
__COM__S:
EndSt: .dc.l _ListName+(DefTrkMax*40)+(DefTrkMax*4)+(DefTrkMax*4)
EndStatio:*******************常駐部
_fprintf_:******************(Cライク)
link a6,#0
movem.l d3-d7/a3-a5,-(sp)
move.l 8(a6),d0
move.w d0,FILENO
movea.l 12(a6),a4
lea.l 16(a6),a5
prL1: move.b (a4)+,d1
jbeq pri_end
cmpi.b #'%',d1
jbeq pri_kazu
andi.w #$00FF,d1
move.l d1,-(sp)
jbsr DosFputc
addq.l #4,sp
jbra prL1
pri_kazu:
move.l (a5)+,d7 *数
move.b (a4)+,d1
jbeq pri_end
cmpi.b #'1',d1
jbeq pr_K1
cmpi.b #'2',d1
jbeq pr_K2
cmpi.b #'3',d1
jbeq pr_K3
cmpi.b #'4',d1
jbeq pr_K4
andi.w #$00FF,d1
move.l d1,-(sp)
jbsr DosFputc
addq.l #4,sp
jbra prL1
pr_K4:
divu #1000,d7
move.l d7,d1
addi.b #'0',d1
andi.w #$00FF,d1
move.l d1,-(sp)
jbsr DosFputc
addq.l #4,sp
swap d7
andi.l #$0000FFFF,d7
pr_K3:
divu #100,d7
move.l d7,d1
addi.b #'0',d1
andi.w #$00FF,d1
move.l d1,-(sp)
jbsr DosFputc
addq.l #4,sp
swap d7
andi.l #$0000FFFF,d7
pr_K2:
*move.l d7,d1
divu #10,d7
addi.b #'0',d7
andi.w #$00FF,d7
move.l d7,-(sp)
jbsr DosFputc
addq.l #4,sp
swap d7
pr_K1:
addi.b #'0',d7
andi.w #$00FF,d7
move.l d7,-(sp)
jbsr DosFputc
addq.l #4,sp
jbra prL1
pri_end:
movem.l (sp)+,d3-d7/a3-a5
unlk a6
rts
FILENO:
.dc.w 0
DosFputc:
move.l 4(a7),d0
move.w FILENO(pc),-(sp)
move.w d0,-(sp)
DOS__ _FPUTC
addq.l #4,sp
rts
MarkerChk:*----------------------------------------
* a0 アドレス
*
*[戻り値] bne ちがう
* beq あっている
jbsr BusErChk
bne @f
*cmpa.l #$00FFF000,a0
*jbcc @f
cmp.l #HEAD1,(a0)
bne @f
cmp.l #HEAD2,4(a0)
bne @f
cmpa.l a0,a0 *z=1
@@:
rts
InvChk:*-----------------------------------
* a0.l==なら非常駐
* a0.l!=なら常駐
movea.l (a0),a0 *一つ前のポインタ
jbsr BusErChk
bne IC1
*cmpa.l #$00FFF000,a0
*jbcc IC1
cmp.l #HEAD1,$0100+(head-SS)(a0)
jbne @f
cmp.l #HEAD2,$0104+(head-SS)(a0)
jbne @f
adda.w #$100,a0 **[SS]のポインタ
rts
@@: **違う
tst.l (a0) *一つ前のポインタ
jbne InvChk *0でない(上へ)
IC1: sub.l a0,a0 *非常駐
rts
AtoI2:*-------------------------------*
move.b (a2),d0
jbeq AtoI2E_
cmpi.b #' ',d0
jbeq AtoI2E_
cmpi.b #'$',d0
jbeq AtoI
cmpi.b #'0',d0
jbcs AtoI2E
cmpi.b #'9'+1,d0
jbcs AtoI
AtoI2E:
moveq #-2,d0
rts
AtoI2E_:
moveq #-1,d0
rts
AtoI:*----------------------------------------
* a2 アドレス
*[戻り値] d0.l 数字
moveq #0,d0
move.b (a2),d2
cmpi.b #'$',d2
jbeq AtoHI
@@: moveq #0,d2
move.b (a2)+,d2
subi.b #'0',d2
jbcs AIr
cmpi.b #9,d2
jbhi AIr
andi.l #$0000FF,d2
mulu #10,d0
add.l d2,d0
jbra @b
AIr: subq #1,a2
rts
AtoHI:
*(Hex専用)
move.b (a2)+,d2 *$ skip
@@: moveq #0,d2
move.b (a2)+,d2
subi.b #'0',d2
jbcs AHIL1
cmpi.b #9,d2
jbhi AHIL1
lsl.l #4,d0 * x16
add.l d2,d0
jbra @b
AHIL1:
ori.b #$20,d2
subi.b #'a'-'0',d2
jbcs AHIL2
cmpi.b #5,d2
jbhi AHIL2
lsl.l #4,d0 * x16
addi.l #10,d0
add.l d2,d0
jbra @b
AHIL2: subq #1,a2
rts
BusErChk:*------------------------------------
* バスエラーチェック (SUPERバイザモードで使う)
* a0=アドレス
* beq おっけー
* bne バスエラー
movem.l d0/a0-a2,-(sp)
bsr BEC_L1
tst.l d0
movem.l (sp)+,d0/a0-a2
rts
BEC_L1:
movea.l sp,a2
movea.l $0008.w,a1 *バスエラーベクタ記憶
move.l #BEC_BE,$0008.w *バスエラーフック
move.l (a0),d0 *見てみる エラーなら _BE へ
moveq #$0,d0
move.l a1,$0008.w
rts
BEC_BE:
movea.l a2,sp *バスエラーが出た
moveq #$ff,d0
move.l a1,$0008.w
rts
*---------------------------------------------------------------
SF equ $FC
SFT5 equ $1
SFPW equ $2
SPP: .dc.l 0
init:*------------------------------------------------------------------
lea usrsp(pc),sp
move.l a0,MEMP
Print LR1(pc)
** 常駐チェック **
suba.l a1,a1
SUPER
move.l d0,SPP
moveq #0,d1
jbsr InvChk
*movea.l a0,a3 *常駐先頭アドレス
move.l a0,d0
beq @f
*lea _SS_-SS(a0),a0
adda.l #_SS_-SS,a0
@@:
move.l a0,_ST_CHK *常駐先頭アドレス
*------
movea.l TRP5_,a0
suba.l #TRP5-head,a0
jbsr MarkerChk
jbne @f
bset #0,d1
@@:
movea.l PWSW_,a0
suba.l #PWSW-head,a0
jbsr MarkerChk
jbne @f
bset #1,d1
@@:
movea.l B_KEYSNS_,a0
suba.l #B_KEYSNS-head,a0
jbsr MarkerChk
jbne @f
bset #2,d1
@@:
movea.l BITSNS_,a0
suba.l #BITSNS-head,a0
jbsr MarkerChk
jbne @f
bset #3,d1
@@:
movea.l MFP_,a0
suba.l #MFP-head,a0
jbsr MarkerChk
jbne @f
bset #4,d1
@@:
move.w #INTVCG_,-(sp)
DOS _INTVCG
addq.l #2,sp
movea.l d0,a0
suba.l #INTVCG-head,a0
jbsr MarkerChk
jbne @f
bset #5,d1
@@:
move.w #INTVCS_,-(sp)
DOS _INTVCG
addq.l #2,sp
movea.l d0,a0
suba.l #INTVCS-head,a0
jbsr MarkerChk
jbne @f
bset #6,d1
@@:
movea.l SCALL_,a0
suba.l #SCALL-head,a0
jbsr MarkerChk
jbne @f
bset #7,d1
@@:
move.l d1,VC_CHK *d1に常駐状態
** 1次コマンドラインチェック for @ **
tst.b (a2)+ *スキップ
move.b (a2),d0
cmpi.b #'@',d0
bne 1f
tst.l _ST_CHK
bne @f
pea LRNCDC(pc)
jbra PE *end
@@: clr.l _ST_CHK
move.w #-1,swii * [@]がある?
addq.l #1,a2
1:
** 常駐していたらそのデータを引用 **
movea.l _ST_CHK(pc),a3
move.l a3,d0
jbeq 9f
lea __COM__-_SS_(a3),a0
lea __COM__,a1
*move.l #(__COM__S-__COM__)/2-1,d0
move.l KeepLong-_SS_(a3),d0
@@: move.b (a0)+,(a1)+
subq.l #1,d0
bcc @b
*move.w #1,_KeySwi
clr.w _MuTmMod
*p_List系を書き戻す
9: move.l _CdcTrak,d0
bsr _CalcListWorks
conl:
** SCSI-IOCSチェック **
move.b $07D4.w,d0
bpl @f * F5 なので bmi なら未登録になる
pea LRSCIO(pc)
jbra PE *end
@@:
** Mach-2 チェック
SCSI__ _S_LEVEL *$0A *未公開コール
cmpi.w #$6411,d0
bcs @f
cmpi.w #$6413+1,d0
bcc @f
lea $FFF000,a0
bra SUC_L2
@@:
** SCSI ROM 位置チェック **
lea $FC0024,a0
bsr BusErChk
bne @f *バスエラーなら・・・
cmpi.l #'SCSI',(a0)
beq SUC_L1
@@: lea $EA0044,a0
bsr BusErChk
bne SUC_L3 *バスエラーなら・・・
cmpi.l #'SCSI',(a0)
jbeq @f
SUC_L3: suba.l a0,a0 *ない
jbra SUC_L2
@@: **スロット
lea $EA0000,a0
jbra SUC_L2
SUC_L1: **内蔵モデル
lea $E96020,a0
SUC_L2:
move.l a0,_SCSI_ROMB
** 環境変数 CDROM チェック **
move.l _ST_CHK(pc),d0 *常駐してたら再設定しない
jbne 1f
pea GETBUF(pc)
clr.l -(sp)
pea CDROM_NAME(pc)
DOS _GETENV
lea 12(sp),sp
tst.l d0
jbmi 1f
move.b GETBUF(pc),d0
ori.b #$20,d0
cmpi.b #'a',d0
bcs @f
cmpi.b #'f'+1,d0
bcc @f
subi.b #'a',d0
addi.b #10,d0
bra 2f
@@:
subi.b #'0',d0
bmi 1f
cmpi.b #16,d0
bcc 1f
move.b GETBUF+1(pc),d7 *次の数字も確認
subi.b #'0',d7
bmi @f
cmpi.b #16,d7
bcc @f
mulu #10,d0
add.w d7,d0
@@:
2:
andi.w #$00FF,d0
move.w d0,_SCSI_ID+2
move.w d0,_SCSI_IDF+2
1:
move.l _ST_CHK(pc),d0 ************************
jbne conl2
jbsr _CdListSub_C
conl2:
** 2次コマンドラインチェック **
sw: move.b (a2)+,d0
jbeq swend
cmpi.b #' ',d0
jbeq sw
cmpi.b #$09,d0 *tab
jbeq sw
cmpi.b #'-',d0
jbeq swc
cmpi.b #'/',d0
jbeq swc
cmpi.b #'0',d0
jbcs @f
cmpi.b #'9'+1,d0
jbcs OwnPlay
@@:
ori.b #$20,d0 *小文字化!
cmpi.b #'a',d0
jbeq AllPlay
エラー0:
moveq #0,d0
エラー:
move.l d0,d7
beq 1f
move.w #' ',-(sp)
DOS _PUTCHAR
move.w #'/',-(sp)
DOS _PUTCHAR
addq.l #4,sp
moveq #0,d0
rol.l #8,d7
move.b d7,d0
beq @f
move.w d0,-(sp)
DOS _PUTCHAR
addq.l #4,sp
@@:
moveq #0,d0
rol.l #8,d7
move.b d7,d0
beq @f
move.w d0,-(sp)
DOS _PUTCHAR
addq.l #4,sp
@@:
moveq #0,d0
rol.l #8,d7
move.b d7,d0
beq @f
move.w d0,-(sp)
DOS _PUTCHAR
addq.l #4,sp
@@:
moveq #0,d0
rol.l #8,d7
move.b d7,d0
beq @f
move.w d0,-(sp)
DOS _PUTCHAR
addq.l #4,sp
@@:
pea LR6_(pc)
clr.w eddip *常駐エリアにデータを戻すか
jbra PE *end
1:
pea LR6(pc)
clr.w eddip *常駐エリアにデータを戻すか
jbra PE *end
swc: **スイッチ判断
move.b (a2)+,d0
jbeq エラー0
cmpi.b #'?',d0
jbeq help
ori.b #$20,d0 *小文字化!
cmpi.b #'r',d0
jbeq swcm1
cmpi.b #'i',d0
jbeq iswc
cmpi.b #'l',d0
jbeq lswc
cmpi.b #'d',d0
jbeq dswc
cmpi.b #'e',d0
jbeq eswc
cmpi.b #'b',d0
jbeq bswc
cmpi.b #'j',d0
jbeq jswc
cmpi.b #'t',d0
jbeq tswc
cmpi.b #'p',d0
jbeq pswc
cmpi.b #'k',d0
jbeq kswc
cmpi.b #'f',d0
jbeq fswc
cmpi.b #'w',d0
jbeq wswc
cmpi.b #'o',d0
jbeq oswc
cmpi.b #'x',d0
jbeq xswc
cmpi.b #'u',d0
jbeq uswc
cmpi.b #'v',d0
jbeq vswc
cmpi.b #'a',d0
jbeq aswc
cmpi.b #'m',d0
jbeq mswc
cmpi.b #'z',d0
jbeq zswc
cmpi.b #'s',d0
jbeq sswc *CD_STOP
cmpi.b #'c',d0
jbeq cswc *CD_CONT
cmpi.b #'h',d0
jbeq help
pea LR7(pc)
clr.w eddip *常駐エリアにデータを戻すか
jbra PE *end
swcoo: .dc.w 0 *なにかコマンドをやったら1
swcom: .dc.w 0 *最終的なコマンド
swtr: .dc.w 0 * /trがある?
swpw: .dc.w 0 * /pwがある?
sw_e: .dc.w 0 * /eがある?
swii: .dc.w 0 * [@]がある?
eddip: .dc.w 0 *常駐エリアにデータを戻すか
swend:**************************************
move.b swcom(pc),d0
cmpi.b #'r',d0
jbeq free
cmpi.b #'i',d0
jbeq keep
cmpi.b #'d',d0
jbeq CD_ERY
cmpi.b #'l',d0
jbeq List *CD_LIST
cmpi.b #'m',d0
jbeq m2swc *CD_MEM_LIST
move.w swcoo(pc),d0 *なにかコマンドをやったら1
jbne PEE
*movea.l SPP,a1
*SUPER
jbsr _cd_play_inf
jbra PEE
swcm1:**************************************
move.b (a2),d2
beq swcm
cmpi.b #' ',d2
beq swcm
cmpi.b #9,d2
beq swcm
move.l #'R',d0
bra エラー
swcm:**************************************
move.b d0,swcom
move.b (a2),swcom+1
jbeq @f
addq.l #1,a2
@@: jbra sw
dswc:**************************************
move.b (a2),d2
jbeq swcm
cmpi.b #' ',d2
ori.b #$20,d2 *小文字化!
cmpi.b #'i',d2
jbne swcm
************-DI[n]
addq.l #1,a2
move.w #1,swcoo
jbsr AtoI
move.b d0,_DiSwc
move.w #1,eddip *バックライト
jbra sw
iswc:**************************************
move.b (a2),d2
jbeq swcm
cmpi.b #' ',d2
jbeq swcm
ori.b #$20,d2 *小文字化!
cmpi.b #'d',d2
jbeq 1f
cmpi.b #'i',d2
jbeq @f
move.l #'I',d0
jbra エラー
@@: ************** /II
addq.l #1,a2
clr.w eddip *バックライト
jbsr _PrintStai
jbra PEE
1: ************** /ID[m]
addq.l #1,a2
move.w #1,swcoo
jbsr AtoI
cmpi.l #16,d0
jbcs @f
move.l #'ID',d0
bra エラー
@@:
move.w d0,_SCSI_ID+2 * ID
move.w d0,_SCSI_IDF+2 * ID
.if 1
move.b (a2),d0
cmpi.b #',',d0
bne 1f
addq.l #1,a2
jbsr AtoI
cmpi.l #16,d0
jbcs @f
move.l #'ID',d0
bra エラー
@@:
move.w d0,_SCSI_BANKID *切り換え ID
1:
.endif
jbsr _CdListSub_C
jbra sw
lswc:**************************************
move.b (a2),d2
jbeq swcm
cmpi.b #' ',d2
jbeq swcm
ori.b #$20,d2 *小文字化!
cmpi.b #'m',d2
jbeq @f
cmpi.b #'e',d2
jbeq lswc_led
cmpi.b #'u',d2
jbeq lswc_l1
jbra swcm
@@: ************** /LM[m]
addq.l #1,a2
move.w #1,swcoo
jbsr AtoI
cmpi.l #9+1,d0 ***
bcs @f
move.l #'LM',d0
bra エラー
@@:
move.w d0,_LUN_MAX *LUN
bsr CCL_LSET *LUN関係キーセット
clr.w _JukeBox *0:ノーマル 1:JukeBox
move.w #1,eddip *バックライト
jbra sw
lswc_l1: **************** /LUN[m]
move.l #'L',d0
addq.l #1,a2
move.b (a2),d2
jbeq エラー
cmpi.b #' ',d2
jbeq エラー
ori.b #$20,d2 *小文字化!
cmpi.b #'n',d2
jbne エラー
addq.l #1,a2
jbsr AtoI
tst.w d0
bpl @f
move.l #'LUN',d0
bra エラー
@@:
cmpi.l #8+1,d0 **
jbcs @f
move.l #'LUN',d0
bra エラー
@@:
tst.w _JukeBox *0:ノーマル 1:JukeBox
beq @f
clr.w _JukeBox *0:ノーマル 1:JukeBox
bra 1f
@@:
cmp.w _SCSI_LUN__,d0
jbeq @f
1: jbsr _SetLUN *LUN変更 d0=LUN
jbsr _EJE_EMU
clr.w _CDIN
clr.w _TrkNo
clr.w _TrkNoS
clr.w _DtTrak *1;データトラック有り,-1;データのみ
clr.w _MemMode *0:ノーマル 1:メモリ
clr.w _MemLong *メモリながさ 0以外ならMEMORY
move.w #-1,_MemPt
move.w #-1,_RndPt
clr.w _DisSuuzi10 * LED用数字クリア
jbsr _CdListSub_C
jbsr HenSuSet
*move.w #1,swcoo
@@: move.w #1,eddip *バックライト
jbra sw
lswc_led: ******************** /LED[n]
move.l #'L',d0
addq.l #1,a2
move.w #1,swcoo
move.b (a2),d2
jbeq エラー
cmpi.b #' ',d2
jbeq エラー
ori.b #$20,d2 *小文字化!
cmpi.b #'d',d2
jbne エラー
addq.l #1,a2
jbsr AtoI
tst.l d0
jbeq 1f
*表示
cmpi.l #2,d0
beq 2f
move.w #1,_DisMode *0;非表示 1;表示 2;Small表示
tst.l _ST_CHK
beq @f
jbsr _B_KLE_D
@@: move.w #1,eddip *バックライト
jbra sw
2: *Small表示
move.w #2,_DisMode *0;非表示 1;表示 2;Small表示
tst.l _ST_CHK
beq @f
jbsr FnkBerChk
jbeq @f
jbsr KillLeds
jbsr _B_KLE_D
@@: move.w #1,eddip *バックライト
jbra sw
1: *消す
tst.l _ST_CHK
beq @f
jbsr FnkBerChk
jbeq @f
jbsr KillLeds
@@:
clr.w _DisMode *0;非表示 1;表示 2;Small表示
move.w #1,eddip *バックライト
jbra sw
jswc:**************************************
move.b (a2),d2
cmpi.b #' ',d2
ori.b #$20,d2 *小文字化!
cmpi.b #'b',d2
jbeq @f
move.l #'J',d0
bra エラー
@@:
addq.l #1,a2
move.w #1,swcoo
tst.w _LUN_MAX *LUN
bne @f
pea LRNOLM(pc)
clr.w eddip *常駐エリアにデータを戻すか
jbra PE *end
@@:
move.w #1,_JukeBox *0:ノーマル 1:JukeBox
jbsr _ZeroUnit
clr.w _CDIN
clr.w _TrkNo
clr.w _TrkNoS
clr.w _DtTrak *1;データトラック有り,-1;データのみ
clr.w _MemMode *0:ノーマル 1:メモリ
clr.w _MemLong *メモリながさ 0以外ならMEMORY
move.w #-1,_MemPt
move.w #-1,_RndPt
clr.w _DisSuuzi10 * LED用数字クリア
tst.l _ST_CHK
jbeq @f
movem.l d0-d2/a0-a2,-(sp)
Print LRLTRD(pc)
jbsr _CdListRead
movem.l (sp)+,d0-d2/a0-a2
@@: jbsr HenSuSet
move.w #1,eddip *バックライト
jbra sw
eswc:**************************************
tst.w sw_e * /eがある?
jbeq @f
move.l #'E',d0
bra エラー
@@:
move.w #-1,sw_e
pea GETBUF(pc)
clr.l -(sp)
pea CDCSW_NAME(pc)
DOS _GETENV
lea 12(sp),sp
tst.l d0
jbmi @f
lea GETBUF(pc),a2
@@: jbra sw
bswc:**************************************
move.w #1,swcoo
jbsr AtoI
lea CmdC_List_L1(pc),a0 *ノーマル用
*tst.w d0
move.w d0,_CmdC_Mod
jbeq @f
lea CmdC_List_L2(pc),a0 *CR用
cmpi.w #$1,d0
jbeq @f
lea CmdC_List_L3(pc),a0 *compact用
@@:
move.l (a0),CmdC_List
move.l (a0),CmdC_ListD
move.l 4(a0),CmdC_List+4
move.l 4(a0),CmdC_ListD+4
move.l 8(a0),CmdC_List+8
move.l 8(a0),CmdC_ListD+8
move.l 12(a0),CmdC_List+12
move.l 12(a0),CmdC_ListD+12
bsr CCL_LSET *LUN関係キーセット
move.w #1,eddip *バックライト
jbra sw
mswc:**************************************
move.b (a2),d2
jbeq swcm
cmpi.b #' ',d2
jbeq swcm
ori.b #$20,d2 *小文字化!
cmpi.b #'u',d2
jbeq @f
move.l #'M',d0
bra エラー
@@: ******* /MU
move.w #-1,_CdcMode *1:しようする
move.w #1,swcoo
addq.l #1,a2
move.w #-1,_CdcMode *1:しようする
move.w #1,_MuTmMod *0:ノーマル 1:強引にキーベクタを書き替え
move.w #1,_KeySwi
move.w #1,eddip *バックライト
jbra sw
tswc:**************************************
move.w #1,swcoo
move.b (a2),d0
cmpi.b #'0',d0
jbne @f
addq.l #1,a2
moveq #0,d0
jbra tswc_L1
@@:
jbsr AtoI
tst.w d0
jbeq tswc_L2
tswc_L1:
move.w #1,eddip *バックライト
***演奏中の割り込み間隔
jbsr _SetKeyTDCT *move.w d0,_KeyTDCT
***演奏中でない時の割り込み間隔
move.w d0,_NoPlWitT
move.b (a2),d0
cmpi.b #',',d0
jbne sw
addq.l #1,a2
jbsr AtoI
move.w d0,_PlyWitT *演奏後の待ち間隔
move.b (a2),d0
cmpi.b #',',d0
jbne sw
addq.l #1,a2
jbsr AtoI
move.w d0,_NoPlWitT *演奏中でない時の割り込み間隔
jbra sw
tswc_L2:
move.b (a2),d0
jbne @f
move.l #'T',d0
jbra エラー
@@:
ori.b #$20,d0 *小文字化!
cmpi.b #'r',d0
jbeq trswc
cmpi.b #'y',d0
jbeq tyswc
move.l #'T',d0
jbra エラー
trswc: *********** /TR
move.w swii(pc),d0
jbne @f
move.l _ST_CHK(pc),d0
jbeq @f
Print LRERSW(pc)
jbra PEE
@@:
addq.l #1,a2
move.w #1,swtr * /trがある?
jbra sw
tyswc: ********* /TR[m]
addq.l #1,a2
jbsr AtoI
subq.l #1,d0
bpl @f
move.l #'TR',d0
bra エラー
@@:
cmpi.l #8,d0
jbcs @f
move.l #'TR',d0
jbra エラー
@@:
tst.w _JukeBox *0:ノーマル 1:JukeBox
beq @f
clr.w _JukeBox *0:ノーマル 1:JukeBox
bra 1f
@@:
cmp.w _SCSI_LUN__,d0
jbeq @f
1: jbsr _SetLUN *LUN変更 d0=LUN
jbsr _EJE_EMU
clr.w _CDIN
clr.w _TrkNo
clr.w _TrkNoS
clr.w _DtTrak *1;データトラック有り,-1;データのみ
clr.w _MemMode *0:ノーマル 1:メモリ
clr.w _MemLong *メモリながさ 0以外ならMEMORY
move.w #-1,_MemPt
move.w #-1,_RndPt
clr.w _DisSuuzi10 * LED用数字クリア
jbsr _CdListSub_C
jbsr HenSuSet
*move.w #1,swcoo
@@: move.w #1,eddip *バックライト
jbra sw
pswc:**************************************
move.w #1,swcoo
move.b (a2),d0
jbne @f
move.l #'P',d0
jbeq エラー
@@:
ori.b #$20,d0 *小文字化!
cmpi.b #'d',d0
jbeq pswc_l1
cmpi.b #'t',d0
jbeq pswc_l2
cmpi.b #'m',d0
jbeq pswc_pm
cmpi.b #'s',d0
jbeq pswc_ps
cmpi.b #'w',d0
jbeq @f
move.l #'P',d0
bra エラー
@@: ********* /PW
move.w swii(pc),d0
jbne @f
move.l _ST_CHK(pc),d0
jbeq @f
Print LRERSW(pc)
jbra PEE
@@:
addq.l #1,a2
move.w #1,swpw * /pwがある?
jbra sw
pswc_l1: ****** /PD
addq.l #1,a2
move.w #1,_SWPD * /pdがある?
clr.w _LUN_MAX * LUN
clr.w _JukeBox *0:ノーマル 1:JukeBox
moveq #1,d0
jbsr _SetLUN *LUN変更 d0=LUN
bsr CCL_LSET *LUN関係キーセット
clr.w _CDIN
clr.w _TrkNo
clr.w _TrkNoS
clr.w _DtTrak *1;データトラック有り,-1;データのみ
clr.w _MemMode *0:ノーマル 1:メモリ
clr.w _MemLong *メモリながさ 0以外ならMEMORY
move.w #-1,_MemPt
move.w #-1,_RndPt
clr.w _DisSuuzi10 * LED用数字クリア
jbsr _CdListSub_C
jbsr HenSuSet
*move.w #1,swcoo
move.w #1,eddip *バックライト
jbra sw
pswc_l2: ****** /PT[n]
addq.l #1,a2
jbsr AtoI
andi.w #$3,d0
move.w d0,_LEDTMRV
move.w #1,eddip *バックライト
jbra sw
pswc_pm: ****** /PM[n]
addq.l #1,a2
jbsr AtoI
tst.l d0
beq @f
clr.w _PLAYSCSTS
move.w #1,eddip *バックライト
jbra sw
@@:
move.w #1,_PLAYSCSTS
move.w #1,eddip *バックライト
jbra sw
pswc_ps: ****** /PS[n]
addq.l #1,a2
jbsr AtoI
tst.l d0
beq @f
clr.w _PLAYSCCAL
move.w #1,eddip *バックライト
jbra sw
@@:
move.w #1,_PLAYSCCAL
move.w #1,eddip *バックライト
jbra sw
kswc:**************************************
move.w #1,swcoo
move.b (a2),d0
jbne @f
move.l #'K',d0
jbra エラー
@@:
ori.b #$20,d0 *小文字化!
cmpi.b #'s',d0
jbeq kswc_ks
cmpi.b #'c',d0
jbeq kswc_kc
cmpi.b #'n',d0
jbeq kswc_kn
jbsr AtoI
andi.l #$1FF,d0
jbne @f
move.l #'K',d0
jbra エラー
@@:
kswc_k: ****** /K[n]
move.l d0,d2
andi.l #$1E0,d2
lsl.l #8,d2 *11
lsl.l #3,d2
move.l d2,_SFTK
move.w d0,d2
andi.w #$001F,d2
ror.w #3,d2
or.l d2,_SFTK
move.w #1,eddip *バックライト
jbra sw
* | 0 0 0 0 OPT.2 OPT.1 CTRL SHIFT |
* |XF3 XF2 XF1 0 0 0 0 0| 0 0 0 0 0 0 XF5 XF4
* OPT.2 OPT.1 CTRL SHIFT XF5 XF4 XF3 XF2 XF1
kswc_kc: ****** /KC[m],[n]
addq.l #1,a2
jbsr AtoI
tst.l d0
jbeq 1f
cmpi.l #$80,d0
jbcs @f
kswc_kc_er:
move.l #'KC',d0
jbra エラー
@@:
move.l d0,d7 *一つ目
move.b (a2)+,d0
cmpi.b #',',d0
jbne kswc_kc_er
jbsr AtoI
tst.l d0
jbeq kswc_kc_er
cmpi.l #$80,d0
jbcc kswc_kc_er
lea KeyC_List,a0
move.b (a0,d0.w),d2
move.b (a0,d7.w),(a0,d0.w)
move.b d2,(a0,d7.w)
move.w #1,eddip *バックライト
jbra sw
1: *初期化
lea KeyC_List,a0
moveq #0,d0
moveq #$80-1,d2
@@: move.b d0,(a0)+
addq.l #1,d0
dbra d2,@b
move.w #1,eddip *バックライト
jbra sw
kswc_kn: ****** /KN[m]
addq.l #1,a2
jbsr AtoI
tst.l d0
bne @f
move.l #'KN',d0
jbra エラー
@@:
cmpi.l #$80,d0
jbcs @f
move.l #'KN',d0
jbra エラー
@@:
move.w d0,d2
lsr.w #3,d0
lea CmdC_List,a0
bclr.b d2,(a0,d0.w)
lea CmdC_ListD,a0
bclr.b d2,(a0,d0.w)
move.w #1,eddip *バックライト
jbra sw
kswc_ks: ****** /KS
addq.l #1,a2
clr.w _KeySwi
move.w #1,eddip *バックライト
jbra sw
aswc:**************************************
jbsr _CdcModeOn
move.w #1,swcoo
jbsr AtoI
tst.l d0
bne @f
move.w #-1,_AutoMode *0:ノーマル 1:オート
move.w #1,eddip *バックライト
jbra sw
@@: move.w #-1,_RndMode *0:ノーマル 1:ランダム
move.w #1,eddip *バックライト
jbra sw
uswc:**************************************
move.w #1,swcoo
move.b (a2),d0
ori.b #$20,d0 *小文字化!
cmpi.b #'a',d0
bne @f
addq.l #1,a2
move.w #-1,_TestunitSw *-1;AUDIOONLYなら未挿入 1;演奏中未挿入 0;そのまま
move.w #1,eddip *バックライト
jbra sw
@@:
jbsr AtoI
move.w #1,eddip *バックライト
tst.l d0
beq @f
clr.w _TestunitSw *-1;AUDIOONLYなら未挿入 1;演奏中未挿入 0;そのまま
jbra sw
@@: move.w #1,_TestunitSw *-1;AUDIOONLYなら未挿入 1;演奏中未挿入 0;そのまま
jbra sw
vswc:**************************************
move.w #1,swcoo
move.b (a2),d0
bne @f
move.l #'V',d0
jbra エラー
@@:
cmpi.b #'m',d0
beq 1f
cmpi.b #'M',d0
beq 1f
**** /V[n]
jbsr AtoI
mulu #5,d0
movem.l d0-d7/a0-a6,-(sp)
move.l d0,-(sp)
jbsr _ChnVol
addq.l #4,sp
movem.l (sp)+,d0-d7/a0-a6
move.w #1,eddip *バックライト
jbra sw
1: **** /VM[n]
addq.l #1,a2
jbsr AtoI
mulu #5,d0
cmpi.l #255+1,d0
jbcs @f
move.l #'VM',d0
jbra エラー
@@:
tst.l d0
jbeq 2f
move.w d0,_MastVol
movem.l d0-d7/a0-a6,-(sp)
move.l _ST_CHK(pc),d0
jbne @f
jbsr _StpDsk *常駐していないなら一度停止
@@:
moveq #0,d0
move.w _MastVol,d0
move.l d0,-(sp)
jbsr _ChnVol
addq.l #4,sp
jbsr CCL_LSET
movem.l (sp)+,d0-d7/a0-a6
move.w #1,eddip *バックライト
jbra sw
2:
clr.w _MastVol
movem.l d0-d7/a0-a6,-(sp)
*jbsr _DefVol
*move.l d0,-(sp)
move.l #255,-(sp)
jbsr _ChnVol
addq.l #4,sp
jbsr CCL_LSET
movem.l (sp)+,d0-d7/a0-a6
move.w #1,eddip *バックライト
jbra sw
fswc:**************************************
jbsr _CdcModeOn
move.w #1,swcoo
movem.l d0-d7/a0-a6,-(sp)
jbsr _NoStMDS
move.l #1,-(sp)
jbsr _CdPlay_restart
addq.l #4,sp
movem.l (sp)+,d0-d7/a0-a6
move.w #1,eddip *バックライト
jbra sw
xswc:**************************************
move.w #1,swcoo
jbsr AtoI
cmpi.w #128-(36+1+10)+1,d0
jbcc xswc_err
move.l d0,d7 *x
move.b (a2)+,d0
jbeq xswc_err
cmpi.b #',',d0
jbne xswc_err
jbsr AtoI
cmpi.w #63+1,d0
jbcc xswc_err
mulu #$800,d0
add.l d0,d7
addi.l #$E40000,d7
movem.l d0/d1/a2,-(sp)
movea.l _ST_CHK(pc),a3
move.l a3,d0
jbeq xswcL
move.l d7,_DRAWADDS-_SS_(a3)
jbsr FnkBerChk
jbeq @f
jbsr KillLeds
@@:
xswcL: movem.l (sp)+,d0/d1/a2
move.l d7,_DRAWADDS
move.w #1,eddip *バックライト
jbra sw
xswc_err:
move.l #'X',d0
jbra エラー
wswc:**************************************
move.w swii(pc),d0
jbne @f
move.l _ST_CHK(pc),d0
jbeq @f
Print LRERSW(pc)
jbra PEE
@@:
move.w #1,swcoo
jbsr AtoI
cmpi.l #100,d0
jbcs wswc_err
cmpi.l #1024+1,d0
jbcc wswc_err
move.l d0,_CdcTrak
bsr _CalcListWorks
bra sw
wswc_err:
move.l #'W',d0
jbra エラー
_CalcListWorks:
*-------------------
* in d0 = /w[n]
*-------------------
movem.l d0/d7/a0,-(sp)
lea _ListName,a0
add.l d0,d0
add.l d0,d0
move.l d0,d7
mulu.w #10,d7
adda.l d7,a0
move.l a0,_pListLong
adda.l d0,a0
move.l a0,_pListStTm
adda.l d0,a0
move.l a0,EndSt
move.l a0,d0
sub.l #__COM__,d0
subq.l #1,d0
move.l d0,KeepLong
movem.l (sp)+,d0/d7/a0
rts
.if 0
_pListName: .dc.l _ListName *メモリ 40文字まで
_pListLong: .dc.l _ListLong *ながさ時間 最上位ビットが立って入れば 拡張曲名あり
_pListStTm: .dc.l _ListStTm *スタート時間 最上位ビットが立って入れば データトラック
_CdcTrak: .dc.l TrkMax *CDCの最大記憶数
ES:****↑↑絶対常駐部
_ListName: .dcb.b 40*TrkMax,0 *メモリ 40文字まで
_ListLong: .dcb.l TrkMax,0 *ながさ時間 最上位ビットが立って入れば 拡張曲名あり
_ListStTm: .dcb.l TrkMax,0 *スタート時間 最上位ビットが立って入れば データトラック
.endif
zswc:**************************************
move.w swii(pc),d0
jbne @f
move.l _ST_CHK(pc),d0
jbeq @f
Print LRERSW(pc)
jbra PEE
@@:
move.b (a2),d0
jbeq zswc_L1
cmpi.b #' ',d0
jbeq zswc_L1
move.b 1(a2),d7
cmpi.b #':',d7
jbne zswc_err
ori.b #$20,d0 *小文字化!
subi.b #'a',d0
jbcs zswc_err
cmpi.b #26,d0
jbcc zswc_err
addq.l #2,a2
andi.l #$00FF,d0
addq.l #1,d0
jbra zswc_L2
zswc_L1:
moveq #0,d0
zswc_L2:
movem.l d1-d2/a0-a2,-(sp)
move.l d0,-(sp)
jbsr _Chk_Cdd
addq.l #4,sp
movem.l (sp)+,d1-d2/a0-a2
tst.l d0
jbne PEE
move.w #1,eddip *バックライト
jbra sw
zswc_err:
move.l #'Z',d0
jbra エラー
oswc:**************************************
move.w #1,swcoo
move.b (a2)+,d0
jbeq @f
ori.b #$20,d0 *小文字化!
cmpi.b #'n',d0
jbeq os_on
cmpi.b #'f',d0
jbeq os_off
@@: move.l #'O',d0
jbra エラー
os_off:
move.b (a2),d0 *'f'の字をスキップ
ori.b #$20,d0 *小文字化!
cmpi.b #'f',d0
jbne @f
addq.l #1,a2
@@:
movem.l d1/a2,-(sp)
move.l _ST_CHK(pc),d0
jbeq @f
jbsr FnkBerChk
jbeq @f
jbsr KillLeds
@@:
clr.w _CdcMode *0:停止
clr.w _CDIN *0:CDは入っていない 1:入っている
clr.b _CHARBUF *LED文字
movem.l (sp)+,d1/a2
move.w #1,eddip *バックライト
jbra sw
os_on:
tst.w _CdcMode *1:運転中
bne 1f
move.w #-1,_CdcMode *1:運転中
clr.w _CDIN *0:CDは入っていない 1:入っている
tst.w _JukeBox *0:ノーマル 1:JukeBox
beq @f
move.w #1,_CDIN
@@:
1: move.w #1,_KeySwi
move.w #1,eddip *バックライト
jbra sw
sswc:***************************************
*CDのストップ -s
jbsr _CdcModeOn
* tst.l _ST_CHK
* beq @f
* jbsr _ChkCdRom
*@@:
move.w #1,swcoo
movem.l d0-d7/a0-a6,-(sp)
jbsr _cd_play_pause
move.w #-1,_PauseMode *0:特に 1:ポーズ中
movem.l d0-d7/a0-a6,-(sp)
move.w #1,eddip *バックライト
jbra sw
cswc:**************************************
*CDのリスタート -c
jbsr _CdcModeOn
* tst.l _ST_CHK
* beq @f
* jbsr _ChkCdRom
*@@:
move.w #1,swcoo
movem.l d0-d7/a0-a6,-(sp)
jbsr _cd_play_re
clr.w _PauseMode *0:特に 1:ポーズ中
movem.l d0-d7/a0-a6,-(sp)
move.w #1,eddip *バックライト
jbra sw
AllPlay:**************************************
move.w #1,swcoo
move.b (a2)+,d0
ori.b #$20,d0 *小文字化!
cmpi.b #'l',d0
jbne エラー0
move.b (a2)+,d0
ori.b #$20,d0 *小文字化!
cmpi.b #'l',d0
jbne エラー0
move.b (a2),d0
jbeq @f
cmpi.b #$20,d0
jbeq @f
jbne エラー0
@@:
movem.l d1/a2/a3,-(sp)
move.l #-1,-(sp)
move.l #-1,-(sp)
jbra PlE
OwnPlay:**************************************
move.w #1,swcoo
subq.l #1,a2
jbsr AtoMSF
tst.l d0
jbpl Plcln
jbsr AtoI
move.l d0,d7
jbeq エラー0
move.b (a2),d0
jbeq Pl1
cmpi.b #' ',d0
jbeq Pl1
cmpi.b #'-',d0
jbeq Plmi
cmpi.b #'/',d0
jbeq Plwaru
jbra エラー0
Plwaru: * t/m:s:f
addq.l #1,a2 * [/] skip
move.l d7,buf2
move.l a0,-(sp)
add.w d7,d7
add.w d7,d7
movea.l _pListStTm,a0
move.l (a0,d7.w),buf3
movea.l (sp)+,a0
jbsr AtoMSF
tst.l d0
jbmi エラー0
movem.l d1-d2/a0-a2,-(sp)
move.l buf3(pc),-(sp)
move.l d0,-(sp)
jbsr _addtime
addq.l #8,sp
movem.l (sp)+,d1-d2/a0-a2
*addi.l #$01000000,d0
move.l d0,buf *開始アドレス
move.b (a2),d0
jbeq Plwaru2
cmpi.b #' ',d0
jbeq Plwaru2
cmpi.b #'-',d0
jbne エラー0
addq.l #1,a2 * [-] skip
move.b (a2),d0
jbeq Plwaru1
cmpi.b #' ',d0
jbeq Plwaru1
jbsr AtoMSF
tst.l d0
jbmi エラー0
* t/m:s:f - m:s:f
movem.l d1-d2/a0-a2,-(sp)
move.l buf3(pc),-(sp)
move.l d0,-(sp)
jbsr _addtime
addq.l #8,sp
movem.l (sp)+,d1-d2/a0-a2
*addi.l #$01000000,d0
movem.l d1/a2/a3,-(sp)
move.l d0,-(sp)
move.l buf(pc),-(sp)
jbra PlE
Plwaru1: * t/m:s:f -
movem.l d1/a2/a3,-(sp)
move.l #-1,-(sp)
move.l buf(pc),-(sp)
jbra PlE
Plwaru2: * t/m:s:f
movem.l d1/a2/a3,-(sp)
move.l buf2(pc),-(sp)
move.l buf(pc),-(sp)
jbra PlE
Plcln: * m:s:f [-[ m:s:f ]]
*addi.l #$01000000,d0
move.l d0,buf
move.b (a2),d0
jbeq Plcln1
cmpi.b #' ',d0
jbeq Plcln1
cmpi.b #'-',d0
jbne エラー0
addq.l #1,a2 * [-] skip
jbsr AtoMSF
tst.l d0
jbpl @f
move.b (a2),d0
jbeq Plcln1
cmpi.b #' ',d0
jbeq Plcln1
jbra エラー0
@@: * m:s:f - m:s:f
*addi.l #$01000000,d0
movem.l d1/a2/a3,-(sp)
move.l d0,-(sp)
move.l buf(pc),-(sp)
jbra PlE
Plcln1: * m:s:f [-]
movem.l d1/a2/a3,-(sp)
move.l #-1,-(sp)
move.l buf(pc),-(sp)
jbra PlE
Pl1: *--------- n
movem.l d1/a2/a3,-(sp)
move.l #0,-(sp)
move.l d7,-(sp)
jbra PlE
Plmi: *---------- n-n
addq.l #1,a2 * [-] skip
jbsr AtoI2
cmpi.l #-1,d0
jbeq Pl2
jbmi エラー0
movem.l d1/a2/a3,-(sp)
move.l d0,-(sp)
move.l d7,-(sp)
jbra PlE
Pl2: *--------- n-
movem.l d1/a2/a3,-(sp)
move.l #-1,-(sp)
move.l d7,-(sp)
*bra PlE
PlE:
jbsr _cd_play
addq.l #8,sp
movem.l d0/d2/a0/a1,-(sp)
jbsr _MemChkT
movem.l (sp)+,d0/d2/a0/a1
movem.l (sp)+,d1/a2/a3
clr.w _PauseMode *0:特に 1:ポーズ中
move.w #1,eddip *バックライト
jbra sw
buf: .dc.l 0
buf2: .dc.l 0
buf3: .dc.l 0
AtoMSF: *-----------------
* m:s:f
move.l a2,-(sp)
jbsr AtoI2 *m
move.l d0,d7
jbmi AtoMSF_E
move.b (a2),d0
cmpi.b #':',d0
jbeq @f
cmpi.b #'"',d0
jbeq @f
cmpi.b #$2C,d0 * [']
jbne AtoMSF_E
@@: addq.l #1,a2 * [:] skip
swap d7
jbsr AtoI2 *s
tst.l d0
jbmi AtoMSF_E
lsl.l #8,d0
or.l d0,d7
move.b (a2),d0
cmpi.b #':',d0
jbeq @f
cmpi.b #'"',d0
jbeq @f
cmpi.b #$2C,d0 * [']
jbne AtoMSF_E
@@: addq.l #1,a2 * [:] skip
jbsr AtoI2 *f
tst.l d0
jbmi AtoMSF_E
or.l d7,d0
addq.l #4,sp
rts
AtoMSF_E:
movea.l (sp)+,a2
moveq #-1,d0
rts
help:**************************************
*ヘルプ表示
Print LRH(pc)
.if 0
clr.w -(sp)
DOS _GETFCB
addq.l #2,sp
movea.l d0,a1
cmpi.l #$434F4E20,$0024(a1) ;'CON '
bne 1f
Print LRH_(pc)
DOS _INKEY
Print CR(pc)
.endif
1: Print LRH1(pc)
clr.w eddip *常駐エリアにデータを戻すか
jbra PEE *end
CD_ERY:**************************************
*CDのリスト -d
move.b swcom+1(pc),d1
jbeq dswc_chks
cmpi.b #' ',d1
jbeq dswc_chks
cmpi.b #'2',d1
jbeq dswc_chks
ori.b #$20,d1 *小文字化!
cmpi.b #'b',d1
jbeq 1f
jbra エラー0
1: ************デバグモード
clr.w eddip *バックライト
move.l _ST_CHK(pc),d0
jbne @f
pea LR8(pc) **非常駐エラー
jbra PE
@@:
movea.l SPP,a1
SUPER
jbsr _debug_mode
jbra PEE
dswc_chks: ************
jbsr _CdListRead_C *チェック
tst.l _CdListS *CDLISTにあるなら 1
jbeq @f
jbsr _CdTotalEnvSet *環境変数セット
Print LRNOFL(pc)
jbra PEE
@@:
** 環境変数 CDCLIST チェック **
pea CDCLIST_FILENAME
clr.l -(sp)
pea CDCLIST_NAME
DOS _GETENV
lea 12(sp),sp
tst.l d0
jbmi dswc_ERR1
move.w #1,-(sp)
pea CDCLIST_FILENAME
DOS _OPEN
addq.l #6,sp
move.w d0,Hendl
tst.l d0
jbmi dswc_NEW
jbsr _FgetsInit
move.w #2,-(sp)
move.l #-1,-(sp)
move.w Hendl,-(sp)
DOS _SEEK
addq.l #8,sp
jbra CD_LW
dswc_NEW:
move.w #%0100000,-(sp)
pea CDCLIST_FILENAME
DOS _CREATE
addq.l #6,sp
move.w d0,Hendl
tst.l d0
jbmi dswc_ERR2 *エラー
CD_LW:
movea.l _ST_CHK(pc),a3
move.l a3,d0
jbeq @f
move.w _CdcMode-_SS_(a3),B_CdcMode
move.w _KeySwi-_SS_(a3),B_KeySwi
clr.w _CdcMode-_SS_(a3)
clr.w _KeySwi-_SS_(a3)
@@:
moveq #0,d0
move.b swcom+1(pc),d1
cmpi.b #'2',d1
bne @f
moveq #1,d0
@@: move.l d0,-(sp)
moveq #0,d0
move.w Hendl,d0
move.l d0,-(sp)
bsr _cd_play_entry
addq.l #8,sp
move.w Hendl,-(sp)
DOS _CLOSE
addq.l #2,sp
movea.l _ST_CHK(pc),a3
move.l a3,d0
jbeq @f
move.w B_CdcMode(pc),_CdcMode-_SS_(a3) *戻す
move.w B_KeySwi(pc),_KeySwi-_SS_(a3)
@@:
jbsr _CdTotalEnvSet *環境変数セット
jbra PEE
dswc_ERR1:
clr.b CDCLIST_FILENAME *リストファイル無し
Print LRLIEV(pc)
jbsr _CdTotalEnvSet *環境変数セット
jbra PEE
dswc_ERR2:
clr.b CDCLIST_FILENAME *リストファイル無し
Print LRLIER(pc)
jbsr _CdTotalEnvSet *環境変数セット
jbra PEE
B_CdcMode: .dc.w 0
B_KeySwi: .dc.w 0
List:**************************************
*CDのリスト -l
move.b swcom+1(pc),d1
jbeq @f
cmpi.b #'0',d1
jbeq @f
cmpi.b #'1',d1
jbeq List_L1
cmpi.b #'2',d1
jbeq List_L2
ori.b #$20,d1 *小文字化!
cmpi.b #'l',d1
jbeq List_LL
cmpi.b #' ',d1
jbne エラー0
@@:
jbsr _CdListRead_C *チェック
move.l #0,-(sp)
jbra List_NOMEE
List_L1:
jbsr _CdListRead_C *チェック
move.l #1,-(sp)
jbra List_NOMEE
List_L2:
jbsr _CdListRead_C *チェック
move.l #2,-(sp)
List_NOMEE:
jbsr _cd_play_list
addq.l #4,sp
clr.w eddip *バックライトなし
jbra PEE
List_LL: **多連装全CDタイトル表示
movea.l _ST_CHK(pc),a3
move.l a3,d0
beq @f
tst.w _TestunitSw *-1;AUDIOONLYなら未挿入 1;演奏中未挿入 0;そのまま
bpl @f
** CDC 常駐していて、-1 だ
move.w #1,SCF-_SS_(a3)
jbsr _cd_play_listl
clr.w SCF-_SS_(a3)
clr.w eddip *バックライトなし
jbra PEE
@@:
jbsr _cd_play_listl
clr.w eddip *バックライトなし
jbra PEE
m2swc:**************************************
*CDのリスト -m
jbsr _cd_mem_list
jbra PEE
keep: ************************** 常駐させる
movem.l d0-d7/a0-a6,-(sp)
jbsr _CDROM_chk
tst.l d0
jbeq keepL4
cmpi.l #-3,d0
jbne @f
**動作不可能 (err = -3)
movem.l (sp)+,d0-d7/a0-a6
jbsr _PrintScsiId *SCSI-ID表示
pea LRNOID(pc)
clr.w eddip *常駐エリアにデータを戻すか
jbra PE *end
@@:
cmpi.l #-1,d0
jbne @f
**CD-ROMじゃ無い (err = -1)
movem.l (sp)+,d0-d7/a0-a6
jbsr _PrintScsiId *SCSI-ID表示
pea LRNOID(pc)
clr.w eddip *常駐エリアにデータを戻すか
jbra PE *end
@@: **準備されていないだけ (err = -2)
jbra keepLL
keepL4:
Print LRLTRD(pc)
*jbsr _CdListRead_C
jbsr _CdListRead
jbpl @f
cmpi.l #-100,d0
jbne keepLL
Print LRNOCD(pc)
jbra keepLL
@@:
*Print _CdName
move.l #_CdName,-(sp)
jbsr _NameCenter
addq.l #4,sp
move.l d0,-(sp)
DOS _PRINT
addq.l #4,sp
Print LRLTOK(pc)
jbsr _CdTotalEnvSet *環境変数セット
keepLL: movem.l (sp)+,d0-d7/a0-a6
tst.w swii * 1;[@]がある?
jbeq @f
Print LRIIK(pc)
@@:
tst.w _SWPD * /pdがある?
jbeq @f
Print LRPDDV(pc)
@@:
tst.w _ExTrak * 1;拡張トラックあり
jbeq @f
Print LREXTK(pc)
@@:
tst.w _OvTrak * 1;トラックオーバー?
jbeq @f
Print LROVTK(pc)
@@:
move.l _CdcTrak,d0
cmpi.l #DefTrkMax,d0
beq @f
move.l d0,-(sp)
pea LRWTK
move.l #1,-(sp)
jbsr _fprintf_
lea 12(sp),sp
@@:
tst.w _CddevSw * 1;計測ドライバー使用
jbeq @f
Print LRCDDS(pc)
@@:
movea.l _ST_CHK(pc),a3
move.l a3,d0
jbeq keepL1
*既に常駐、設定変更
clr.w (SUC-_SS_)(a3) *白帯で1になったまま終わってしまうともう動かないので初期化
clr.w (SCF-_SS_)(a3) *白帯で1になったまま終わってしまうともう動かないので初期化
*clr.w (MFP_ING-_SS_)(a3) *白帯で1になったまま終わってしまうともう動かないので初期化
clr.l IocsSwc *白帯で1になったまま終わってしまうともう動かないので初期化
move.w #1,eddip *バックライト
pea LR5(pc)
jbra PE *end
keepL1: **セット
**TRAP 5 チェック**
tst.w swii * 1;[@]がある?
jbne @f
tst.w swtr *sw trがある?
jbne @f
movea.l TRP5_,a0
cmpa.l #$00FFF000,a0
jbcc @f
pea LRTP5(pc)
jbra PE *end
@@:
.if 0
clr.w _TrkNo
pea _plyinf(pc)
jbsr _ChkPly
addq.l #4,sp
tst.l d0
jbne keepL3
jbsr _ChkPlyDisp
move.l _plyinf(pc),d0
cmpi.b #$11,d0
jbeq keepL2
cmpi.b #$12,d0
jbeq keepL2
clr.w _TrkNo
jbra keepL3
keepL2:
move.l _plyinf+4(pc),d0
move.w d0,_TrkNo
move.w d0,_TrkNoS
jbsr _MemChkT
jbsr _SetTrkLong
keepL3:
.else
movem.l d0-d7/a0-a6,-(sp)
bsr StopCd
movem.l (sp)+,d0-d7/a0-a6
.endif
SCSI $1E * TWOSCSI チェック
move.w d0,_TwsFlg *
move.w #SF,_STFLAG *常駐チェック用
tst.w swtr *sw trがある?
jbne @f
ori.w #SFT5,_STFLAG *常駐チェック用 SFT5;trap5未使用
move.l TRP5_,TRP5_JPT
move.l #TRP5,TRP5_
@@:
tst.w swpw *sw pwがある?
jbeq @f
ori.w #SFPW,_STFLAG *常駐チェック用 PWSW;リセット時CD停止
move.l PWSW_,PWSW_JPT
move.l #PWSW,PWSW_
@@:
move.l B_KEYSNS_,B_KEYSNS_JPT
move.l #B_KEYSNS,B_KEYSNS_
move.l BITSNS_,BITSNS_JPT
move.l #BITSNS,BITSNS_
move.l MFP_,MFP_JPT
move.l MFP_,MFP_JPT_
move.l #MFP,MFP_
move.l SCALL_,SCALL_JPT
move.l #SCALL,SCALL_
pea INTVCS
move.w #INTVCS_,-(sp)
DOS _INTVCS
addq.l #6,sp
move.l d0,INTVCS_JPT
pea INTVCG
move.w #INTVCG_,-(sp)
DOS _INTVCS
addq.l #6,sp
move.l d0,INTVCG_JPT
** 16dotfontアドレス奪取
moveq #$20,d1
moveq #8,d2
IOCS _FNTADR
subi.l #$20*16,d0
move.l d0,HanRomAdd
** 乱数乱数
IOCS _TIMEGET
add.l $00ed0040,d0
move.l d0,-(sp) *乱数初期化に使用
jbsr _Randomize
addq.l #4,sp
jbsr _Rand
move.l d0,-(sp)
jbsr _Randomize
addq.l #4,sp
jbsr _WaitCC *今の1/100s
clr.w _PlyTD *すぐに実行されるように
jbsr _ChkCdRom
tst.w _CdcMode *0:停止中 1:運転中
jbeq @f
tst.w _DisMode *0;非表示 1;表示 2;Small表示
jbeq @f
jbsr _B_KLE_D
@@:
*------
move.l _SCSI_ID,d4 * ダミーで発行
SCSI _S_TESTUNIT * CDCLUN に有効
*------
Print LRKP(pc)
clr.w -(sp)
movea.l EndSt,a0
suba.l #StartStatio,a0
move.l a0,-(sp)
*move.l #EndStatio-StartStatio,-(sp)
DOS _KEEPPR
free: *****************************常駐解除
movea.l _ST_CHK(pc),a3
move.l a3,d0
jbne @f
*jbsr _CdcPlayStopTrap *違うバージョン対策
pea LR8(pc) **非常駐
clr.w eddip *常駐エリアにデータを戻すか
jbra PE *end
@@:
move.l VC_CHK(pc),d1
cmp.w _STFLAG,d1
jbeq @f
pea LR4(pc) **ベクタが占領
clr.w eddip *常駐エリアにデータを戻すか
jbra PE *end
@@:
***解除の前に
tst.w _ScscChksw-_SS_(a3) *1;STSIN MSGIN の実行待ち
beq @f
jbsr _scsi_cmd_chk_s
@@:
***解除!!
move.w sr,-(sp)
DI
tst.b $0CBC.w * CPUFLG
beq @f
moveq #3,d1 * キャッシュクリアのつもり
moveq #$AC,d0
trap #15
@@:
move.w _STFLAG,d0 *常駐チェック用
andi.w #SFT5,d0
jbeq @f
move.l #(TRP5_JPT-_SS_),d0
move.l 0(a3,d0.l),TRP5_
@@:
move.w _STFLAG,d0 *常駐チェック用
andi.w #SFPW,d0
jbeq @f
move.l (PWSW_JPT-_SS_)(a3),PWSW_
@@:
move.l (B_KEYSNS_JPT-_SS_)(a3),B_KEYSNS_
move.l (BITSNS_JPT-_SS_)(a3),BITSNS_
move.l (MFP_JPT-_SS_)(a3),MFP_
move.l (INTVCS_JPT-_SS_)(a3),-(sp)
move.w #INTVCS_,-(sp)
DOS _INTVCS
addq.l #6,sp
move.l (INTVCG_JPT-_SS_)(a3),-(sp)
move.w #INTVCG_,-(sp)
DOS _INTVCS
addq.l #6,sp
move.l (SCALL_JPT-_SS_)(a3),SCALL_
tst.b $0CBC.w * CPUFLG
beq @f
moveq #3,d1 * キャッシュクリアのつもり
moveq #$AC,d0
trap #15
@@:
move.w (sp)+,sr
jbsr FnkBerChk
jbeq @f
jbsr KillLeds
@@:
*lea SS-_SS_(a3),a3 * _SS_ から SS へ
adda.l #SS-_SS_,a3 * _SS_ から SS へ
sub.l #$00000F0,a3
move.l a3,-(sp)
DOS _MFREE
addq.l #4,sp
suba.l a3,a3
pea LR3(pc)
PE: DOS _PRINT
addq.l #4,sp
PEE:
tst.w eddip *バックライト
jbeq @f
jbsr HenSuSet
@@:
DOS _EXIT
_CdListSub_C:************************
tst.l _ST_CHK
jbne @f
movem.l d0-d2/a0-a2,-(sp)
jbsr _CdListSub
movem.l (sp)+,d0-d2/a0-a2
@@:
rts
_CdListRead_C:*************コマンドライン用
tst.l _ST_CHK
jbne @f
jbsr _CdListRead
@@:
rts
HenSuSet:** 常駐していたらそのデータ流し込む1**
move.l _ST_CHK(pc),d0
jbne @f
rts
@@:
movem.l d0-d2/a0-a3,-(sp)
jbsr _ChkCdRom
tst.w _CdcMode *0:停止中 1:運転中
jbeq @f
jbsr _B_KLE_D
@@:
movea.l _ST_CHK(pc),a3
lea __COM__,a0
lea __COM__-_SS_(a3),a1
*move.w #(__COM__S-__COM__)/2-1,d0
move.l KeepLong-_SS_(a3),d0
@@: move.b (a0)+,(a1)+
subq.l #1,d0
bcc @b
movem.l (sp)+,d0-d2/a0-a3
rts
CCL_LSET:*************LUN,VOL関係キーセット
move.w _LUN_MAX,d0
add.w d0,d0
lea CC_LUN0(pc),a0
move.w (a0,d0.w),d0
move.w d0,CmdC_List+(CCLF-CmdC_List_L2)
move.w d0,CmdC_ListD+(CCLF-CmdC_List_L2)
tst.w _MastVol
beq @f
*│ CLR │ ↓ │ → │ ↑ │ ← │ UNDO │Rolldn│Rollup
ori.b #%0101_0000,CmdC_List+7
ori.b #%0101_0000,CmdC_ListD+7
rts
@@:
andi.b #%1010_1111,CmdC_List+7
andi.b #%1010_1111,CmdC_ListD+7
rts
_MatherEnvSet:*************親環境変数設定
link a6,#0
movea.l MEMP(pc),a2
1:
lea.l $0010(a2),a1
IOCS _B_LPEEK *プロセスの環境アドレス
andi.l #$00ffffff,d0
beq @f *0なら
btst.l #0,d0
bne @f *奇数なら
move.l 12(a6),-(sp) *内容
move.l d0,-(sp) *ENV
move.l 8(a6),-(sp) *環境変数
DOS _SETENV
lea.l 12(sp),sp
@@:
lea.l 4(a2),a1
IOCS _B_LPEEK *一つ前のメモリ管理ポインタ
andi.l #$00ffffff,d0
beq @f *0ならおわり
btst.l #0,d0
bne @f *奇数ならおわり
movea.l d0,a2 *ポインタを変更
bra 1b
@@:
unlk a6
rts
StopCd: ********************************************
* 演奏を停止させる
* 常駐時用
tst.w _LUN_MAX
bne 1f
jbsr _ZeroUnit
rts
1:
move.w _SCSI_LUN__,-(sp)
move.w _LUN_MAX,d7
subq.w #1,d7
@@: move.l d7,d0
jbsr _SetLUN
jbsr _ZeroUnit
dbra d7,@b
move.w (sp)+,_SCSI_LUN__
moveq #0,d0
move.w _SCSI_LUN__,d0
jbsr _SetLUN
rts
*****************************************************************
CmdC_List_L1: *ノーマル用
defccl
CmdC_List_L2: *CR対応用
.dc.b %0000_0010 **│ 6& │ 5% │ 4$ │ 3# │ 2" │ 1! │ ESC │未定義
.dc.b %1000_0000 **│ BS │ \| │ ^~ │ -= │ 0 │ 9) │ 8( │ 7'
.dc.b %0001_1101 **│ U │ Y │ T │ R │ E │ W │ Q │ TAB
.dc.b %1111_0000 **│ S │ A │ [CR] │ [ │ @` │ P │ O │ I
.dc.b %0000_0000 **│ ;+ │ L │ K │ J │ H │ G │ F │ D
.dc.b %0000_0110 **│ N │ B │ V │ C │ X │ Z │ ] │ :*
.dc.b %1100_0000 **│ DEL │ HOME │ [SP] │ _ │ /? │ .> │ ,< │ M
.dc.b %1010_1111 **│ CLR │ ↓ │ → │ ↑ │ ← │ UNDO │Rolldn│Rollup
.dc.b %1111_1111 **│ 4 │ + │ 9 │ 8 │ 7 │ - │ * │ /
.dc.b %1111_1111 **│ 0 │ ENTER│ 3 │ 2 │ 1 │ = │ 6 │ 5
.dc.b %0000_1011 **│ XF3 │ XF2 │ XF1 │ HELP │ 登録 │ 記号 │ . │ ,
.dc.b %0000_0000 **│ ヒカナ │ INS │ CAPS │コード│ ローマ字│ かな │ XF5 │ XF4
CCLF: .dc.b %0000_0000 **│ F5 │ F4 │ F3 │ F2 │ F1 │ COPY │ BREAK│ 全角
.dc.b %0000_0000 **│未定義│未定義│未定義│ F10 │ F9 │ F8 │ F7 │ F6
.dc.b %0000_0000 **│未定義│未定義│未定義│未定義│ OPT.2│ OPT.1│ CTRL │ SHIFT
.dc.b %1110_0000 **│未定義│未定義│未定義│未定義│未定義│未定義│未定義│未定義
CmdC_List_L3: *compact用
.dc.b %0000_0010 **│ 6& │ 5% │ 4$ │ 3# │ 2" │ 1! │ ESC │未定義
.dc.b %1001_1111 **│ BS │ \| │ ^~ │ -= │ 0 │ 9) │ 8( │ 7'
.dc.b %1001_1101 **│ U │ Y │ T │ R │ E │ W │ Q │ TAB
.dc.b %1111_0111 **│ S │ A │ [CR] │ [ │ @` │ P │ O │ I
.dc.b %1111_0000 **│ ;+ │ L │ K │ J │ H │ G │ F │ D
.dc.b %0000_0110 **│ N │ B │ V │ C │ X │ Z │ ] │ :*
.dc.b %1101_1111 **│ DEL │ HOME │ [SP] │ _ │ /? │ .> │ ,< │ M
.dc.b %1010_1111 **│ CLR │ ↓ │ → │ ↑ │ ← │ UNDO │Rolldn│Rollup
.dc.b %1111_1111 **│ 4 │ + │ 9 │ 8 │ 7 │ - │ * │ /
.dc.b %1111_1111 **│ 0 │ ENTER│ 3 │ 2 │ 1 │ = │ 6 │ 5
.dc.b %0000_1011 **│ XF3 │ XF2 │ XF1 │ HELP │ 登録 │ 記号 │ . │ ,
.dc.b %0000_0000 **│ ヒカナ │ INS │ CAPS │コード│ ローマ字│ かな │ XF5 │ XF4
.dc.b %0000_0000 **│ F5 │ F4 │ F3 │ F2 │ F1 │ COPY │ BREAK│ 全角
.dc.b %0000_0000 **│未定義│未定義│未定義│ F10 │ F9 │ F8 │ F7 │ F6
.dc.b %0000_0000 **│未定義│未定義│未定義│未定義│ OPT.2│ OPT.1│ CTRL │ SHIFT
.dc.b %1110_0000 **│未定義│未定義│未定義│未定義│未定義│未定義│未定義│未定義
CC_LUN0:
.dc.b 0
.dc.b 0
CC_LUN1:
.dc.b %0000_1000 **│ F5 │ F4 │ F3 │ F2 │ F1 │ COPY │ BREAK│ 全角
.dc.b %0000_0000 **│未定義│未定義│未定義│ F10 │ F9 │ F8 │ F7 │ F6
CC_LUN2:
.dc.b %0001_1000 **│ F5 │ F4 │ F3 │ F2 │ F1 │ COPY │ BREAK│ 全角
.dc.b %0001_0000 **│未定義│未定義│未定義│ F10 │ F9 │ F8 │ F7 │ F6
CC_LUN3:
.dc.b %0011_1000 **│ F5 │ F4 │ F3 │ F2 │ F1 │ COPY │ BREAK│ 全角
.dc.b %0001_0000 **│未定義│未定義│未定義│ F10 │ F9 │ F8 │ F7 │ F6
CC_LUN4:
.dc.b %0111_1000 **│ F5 │ F4 │ F3 │ F2 │ F1 │ COPY │ BREAK│ 全角
.dc.b %0001_0000 **│未定義│未定義│未定義│ F10 │ F9 │ F8 │ F7 │ F6
CC_LUN5:
.dc.b %1111_1000 **│ F5 │ F4 │ F3 │ F2 │ F1 │ COPY │ BREAK│ 全角
.dc.b %0001_0000 **│未定義│未定義│未定義│ F10 │ F9 │ F8 │ F7 │ F6
CC_LUN6:
.dc.b %1111_1000 **│ F5 │ F4 │ F3 │ F2 │ F1 │ COPY │ BREAK│ 全角
.dc.b %0001_0001 **│未定義│未定義│未定義│ F10 │ F9 │ F8 │ F7 │ F6
CC_LUN7:
.dc.b %1111_1000 **│ F5 │ F4 │ F3 │ F2 │ F1 │ COPY │ BREAK│ 全角
.dc.b %0001_0011 **│未定義│未定義│未定義│ F10 │ F9 │ F8 │ F7 │ F6
CC_LUN8:
.dc.b %1111_1000 **│ F5 │ F4 │ F3 │ F2 │ F1 │ COPY │ BREAK│ 全角
.dc.b %0001_0111 **│未定義│未定義│未定義│ F10 │ F9 │ F8 │ F7 │ F6
CC_LUN9:
.dc.b %1111_1000 **│ F5 │ F4 │ F3 │ F2 │ F1 │ COPY │ BREAK│ 全角
.dc.b %0001_1111 **│未定義│未定義│未定義│ F10 │ F9 │ F8 │ F7 │ F6
MEMP:
.dc.l 0
_ST_CHK:
.dc.l 0
VC_CHK:
.dc.l 0
GETBUF:
.ds.b 256
.even
CDROM_NAME:
.dc.b 'CDROM',0
.even
CDCSW_NAME:
.dc.b 'CDCSW',0
.even
LRKP: .dc.b ' 常駐しました。 ',$0d,$0a,0
LRTP5: .dc.b ' TRAP #5 が使用されているようです。常駐しません。',$0d,$0a,0
LR3: .dc.b ' 常駐解除しました。 ',$0d,$0a,0
LR4: .dc.b ' ベクタが占領されています。',$0d,$0a,0
LR5: .dc.b ' 設定を変更しました。 ',$0d,$0a,0
LR6_: .dc.b 'スイッチが異常です。 ',$0d,$0a,0
LR6: .dc.b ' コマンドラインが異常です。',$0d,$0a,0
LR7: .dc.b ' スイッチが異常です。 ',$0d,$0a,0
LR8: .dc.b ' 常駐していません。 ',$0d,$0a,0
LRLTRD: .dc.b ' タイトルリストファイルとCDのチェック中です。',$0d,$0a,0
LRLTOK: .dc.b ' タイトルリストファイルにありました。',$0d,$0a,0
LRLTBD: .dc.b ' タイトルリストファイルにはありません。',$0d,$0a,0
LROVTK: .dc.b ' 管理トラックが足りませんでした。',$0d,$0a,0
LRWTK: .dc.b ' %4個の管理トラックを確保しています。',$0d,$0a,0
LRIIK: .dc.b ' CDC.x の複数使用します。',$0d,$0a,0
LRPDDV: .dc.b ' PD-DRIVE(LUN有効MODE)対策します。',$0d,$0a,0
LREXTK: .dc.b ' 拡張トラックを使用しています。',$0d,$0a,0
LRCDDS: .dc.b ' 計測技研 CD-ROM DRIVER IOCTRL CALL を使用します。',$0d,$0a,0
LRNOID: .dc.b ' の装置は、CD-ROM ではないようです。',$0d,$0a
.dc.b ' 常駐しません。',$0d,$0a,0
LRERSW: .dc.b ' /Z,/TR,/PW,/W は常駐時のみ有効なコマンドです。',$0d,$0a,0
LRNOCD: .dc.b ' CDが準備されていません。',$0d,$0a,0
LRLIEV: .dc.b ' 環境変数 CDCLIST が定義されていません。',$0d,$0a,0
LRLIER: .dc.b ' 環境変数 CDCLIST の内容が異常です。',$0d,$0a,0
LRNOLM: .dc.b ' /LM が指定されていないので /JB は無効です。',$0d,$0a,0
LRNOFL: .dc.b ' この CD は既に登録されています。',$0d,$0a,0
LRSCRM: .dc.b ' SCSI ROM がありません??',$0d,$0a,0
LRSCIO: .dc.b ' SCSI-IOCS がありません。',$0d,$0a,0
LRNCDC: .dc.b ' CDC.x は常駐していません。',$0d,$0a,0
LRH: .dc.b $0d,$0a
.dc.b '使用法:CDC.x [switch]|[曲番号(時間)[-[曲番号(時間)]]]|[ALL]',$0d,$0a
.dc.b ' 曲番号 : 演奏するCDの曲番号を指定します。',$0d,$0a
.dc.b ' u:v:w- : u分v秒w~最後まで演奏します。',$0d,$0a
.dc.b ' u:v:w-x:y:z : u分v秒w~x分y秒zまで演奏します。',$0d,$0a
.dc.b ' ?/u:v:x- : ? 曲目のu分v秒w~最後まで演奏します。',$0d,$0a
.dc.b ' ?/u:v:w-x:y:z : ? 曲目のu分v秒w~x分y秒zまで演奏します。',$0d,$0a
.dc.b ' ALL : 全曲演奏します。',$0d,$0a
.dc.b ' switch :',$0d,$0a
*.dc.b ' @ ・・・・・・ CDC.x を重複常駐します(必ず頭に付けること)。',$0d,$0a
.dc.b ' 無し ・・・ 現在の CD-ROM の状態を表示します。',$0d,$0a
.dc.b ' /I ・・・・・ 常駐します。',$0d,$0a
.dc.b ' /R ・・・・・ 常駐解除します。',$0d,$0a
.dc.b ' /L ・・・・・ CD-ROM の演奏時間を一覧します。',$0d,$0a
.dc.b ' /L2 ・・・・ CD-RO Mの演奏時間を一覧します(拡張曲名,中間曲名対応)。',$0d,$0a
*** .dc.b ' /LL ・・・・ 多連CD-ROMのCDタイトルを一覧します。',$0d,$0a
.dc.b ' /D ・・・・・ CD-ROM をタイトルリストファイルに追加します。',$0d,$0a
.dc.b ' /D2 ・・・・ CD-ROM をタイトルリストファイルに追加します(index対応)。',$0d,$0a
.dc.b ' /M ・・・・・ 現在のプログラム状態を表示します。',$0d,$0a
.dc.b ' /ID[n]・・ CD-ROM の ID を指定します。(def.%CDROM%)',$0d,$0a
.dc.b ' /LUN[n]・ CD-ROM の LUN を指定します。(def.0)',$0d,$0a
.dc.b ' /TY[n]・・ CD-ROM の TRAY を指定します。(def.1)',$0d,$0a
.dc.b ' /LM[n]・・ [n]連 CD-ROM に対応します。(def.0)',$0d,$0a
.dc.b ' /JB ・・・・ JukeBoxモードにします(必ず/LM指定の後で)。',$0d,$0a
.dc.b ' /PD ・・・・ PD-DRIVE に対応します。',$0d,$0a
.dc.b ' /W[n] ・・ 管理トラック数を設定します(常駐時のみ有効)。(def.200)',$0d,$0a
.dc.b ' /Z ・・・・・ 計測 CDDEV.SYS の IOCTRL を使用します(常駐時のみ有効)。',$0d,$0a
.dc.b ' /TR ・・・・ trap5 を使用しない(常駐時のみ有効)。',$0d,$0a
.dc.b ' /PW ・・・・ 電源 off 時 CD を止める様にします(常駐時のみ有効)。',$0d,$0a
.dc.b 0
LRH1:
.dc.b ' /S,/C ・・ 演奏を一時停止,再開します。',$0d,$0a
.dc.b ' /F ・・・・・ 演奏中、次の曲へスキップさせます。',$0d,$0a
.dc.b ' /VM[n]・・ ボリューム変更を有効にし、マスターボリュームを指定します。(def.0=使用しない)',$0d,$0a
.dc.b ' /V[n] ・・ ボリューム変更をします。(def.51)',$0d,$0a
.dc.b ' /A ・・・・・ オートモードにします。',$0d,$0a
.dc.b ' /A1 ・・・・ ランダムモードにします。',$0d,$0a
.dc.b ' /PT[n]・・ 演奏時間表示モードを設定します。0=ノーマル,1=リバース,2=トータル,3=トータルリバース。(def.0)',$0d,$0a
.dc.b ' /OFF ・・・ CDC.x の機能を停止します。',$0d,$0a
* .dc.b ' /ON ・・・・ CDC.x の機能を再開します。キー入力禁止も解除します。',$0d,$0a
.dc.b ' /LED[n]・ LED の表示の ON/OFF します。 0=OFF,1=ON。(def.1)',$0d,$0a
.dc.b ' /KS ・・・・ CDC.x のキー操作を使えないようにします(解除は/ON)。',$0d,$0a
.dc.b ' /T[m][,[n][,[o]]] ・・',$0d,$0a
.dc.b ' CDC.x の割り込みタイミングを 1/100s単位で設定します。(def.m=100,n=100,o=100)',$0d,$0a
.dc.b ' /X[x],[y]・ CDC.x の LED 部の表示位置を設定します。(def.x=49,y=29)',$0d,$0a
.dc.b ' /K[n] ・・ CDC.x 機能のシフトキー設定。(def.8 = [XF4])[XF1]=1 : [XF1]=2 : [XF3]=4',$0d,$0a
.dc.b ' [XF4]=8 : [XF5]=16 : [SHIFT]=32 : [CTRL]=64 : [OPT1]=128 : [OPT2]=256',$0d,$0a
.dc.b ' /KC[m],[n]・ キーを入れ換えます。キースキャンコードで指定します。',$0d,$0a
.dc.b ' /KN[m]・・ 特定のキーを使用しないようにします。/KC[m,n]の影響を受けません。',$0d,$0a
.dc.b ' /B[n]・・・ n=2 で compactキーボードモードにします。(def.0)',$0d,$0a
*.dc.b ' /KNの変更を元に戻します。',$0d,$0a
*.dc.b ' /MU ・・・・ MUTERM モード。強引にキーベクタを奪取します。',$0d,$0a
.dc.b ' /U ・・・・・ 演奏中、CD 未挿入にします。',$0d,$0a
.dc.b ' /U1 ・・・・ CD-ROM 挿入状態はデバイス通りにします。',$0d,$0a
.dc.b ' /UA ・・・・ AUDIO-ONLY の CD の場合未挿入状態にします。',$0d,$0a
.dc.b ' /PM ・・・・ 演奏時の固まりを回避する。',$0d,$0a
.dc.b ' /PM1 ・・・ /PM を無効にする(def.)。',$0d,$0a
.dc.b ' /PS ・・・ 演奏時間計算に X68 内タイマーを使用します。',$0d,$0a
**.dc.b ' /PS1 ・・・ /PS を取り消します。',$0d,$0a
**** .dc.b ' /DI ・・・・ SCSI-CMD 中割り込みを止めません(def.)。',$0d,$0a
**** .dc.b ' /DI1 ・・・ SCSI-CMD 中割り込みを止めます。',$0d,$0a
.dc.b ' /II ・・・・ インフォメーション。',$0d,$0a
**** .dc.b ' /DB ・・・・ デバッグモード。CD-DA チェッカー。',$0d,$0a
.dc.b ' /E ・・・・・ 環境変数 CDCSW を参照します(以下のスイッチは無視されます)。',$0d,$0a
CR: .dc.b $0d,$0a,0
.even
LRH_: .dc.b '-more-',0
LR1: .dc.b 'X68k AUDIO-CD CONTROLER Version 1.10H Copyright 1994-97 TNB製作所',$0d,$0a
.dc.b 0
.even